reads a character string from a file
str = mgetstr(n, [fd])
n non-negative integer: | |
---|---|
how many characters should be read. |
: :str the character string to be read. :
The mgetstr function attempts to read up to n characters from a file. If end of file is reached before n characters are read, mgetstr returns the properly read values only. As a consequence, when the read cursor is already at the end of the file when mgetstr is called, it returns an empty string no matter what value is provided for n.
fn = SCI + '/ACKNOWLEDGEMENTS'; // absolute path to some file
details = `fileinfo`_(fn); // retrieve file details
len = details(1); // get file length
fd = `mopen`_(fn, 'rt'); // open file as text with read mode
str1 = mgetstr(33, fd) // read 33 characters from fd
`length`_(str1) // 33 characters read
str2 = mgetstr(272, fd) // read the next 272 characters from fd
`length`_(str2) // 272 characters read
`mseek`_(len - 5); // jump to the 5th character before end of file
str3 = mgetstr(10, fd) // try to read 10 characters: returns 5 characters only, no more available
`length`_(str3) // yes, there are 5 characters: you just can't see the linefeed :)
str4 = mgetstr(10, fd) // read 10 characters: returns empty string
`length`_(str4) // empty string
`mclose`_(fd); // close file descriptor