14.2.18文件结束和错误

一旦文件被打开,就可以获取其状态。作为一个例子feof函数确定是否已到达文件的末尾。这在一次读取文件的小部分时非常有用。以下示例显示如何一次从文件中读取一行,直到到达末尾。

filename = "myfile.txt";
fid = fopen (filename, "r");
while (! feof (fid) )
  text_line = fgetl (fid);
endwhile
fclose (fid);

请注意,在某些情况下,读取文件的整体内容然后进行处理比按行读取更有效。这有一个潜在的优点,即删除上面代码中的循环。

 
: status = feof (fid)

如果文件描述符指定的文件遇到文件结束条件,则返回1fid否则为0。

请注意feof如果已经遇到文件末尾,则只返回1,而不是如果下一次读取操作将导致文件末尾的情况。

详见: fread, frewind, fseek, fclear, fopen.

广告
 
: msg = ferror (fid)
: [msg, err] = ferror (fid)
: […] = ferror (fid, "clear")

查询文件描述符指定流的错误状态fid.

如果存在错误条件,则返回一个字符串msg描述威瑟罗。否则,返回一个空字符串.

第二个输入"clear"是可选的。如果提供,流上的错误状态将被清除。

可选的第二个输出是错误状态的数字指示。err如果遇到错误条件,则为1,否则为0。

请注意ferror指示是否已经发生错误,而不是下一个操作是否会导致错误情况。

详见: fclear, fopen.

广告
 
: fclear (fid)

清除文件描述符指定的文件的流状态fid.

详见: ferror, fopen.

广告
 
: freport ()

打印已打开的文件的列表,以及这些文件是为了读取、写入还是同时打开。

例如

freport ()

     -|  number  mode  arch       name
     -|  ------  ----  ----       ----
     -|     0     r    ieee-le    stdin
     -|     1     w    ieee-le    stdout
     -|     2     w    ieee-le    stderr
     -|     3     r    ieee-le    myfile

详见: fopen, fclose, is_valid_file_id.

广告

版权所有 © 2024-2025 Octave中文网

ICP备案/许可证号:黑ICP备2024030411号-2