函数 | 用途 | 常见场景 |
---|---|---|
ferror() | 检测文件流是否发生错误 | 文件写入失败、读取异常 |
feof() | 检测文件流是否到达文件末尾 | 逐字符/逐块读取到文件结尾 |
1. ferror()
函数
作用:检测文件流是否发生了读写错误(如磁盘损坏、权限不足等)。
返回值:
-
非零值:表示发生错误。
-
0:无错误。
2. feof()
函数
作用:检测文件流是否到达了文件末尾(End-of-File, EOF)。
返回值:
-
非零值:已到达文件末尾。
-
0:未到达末尾。
示例代码:
#include <stdio.h>
#include <unistd.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
#include <string.h>
FILE *f = NULL;
int ret;
char buf[128] = {0};
int main(void)
{
f = fopen("./test.txt","r+");
if (NULL == f)
{
perror("fopen error");
return 1;
}
ret = fwrite("hello world",1,11,f);
if ( ret < 11)
{
perror("fwrite error");
fclose(f);
return 1;
}
ret == fseek(f,0,SEEK_SET);
if (-1 == ret)
{
perror(" fseek error");
fclose(f);
return 1;
}
ret == fread(buf,1,11,f);
if (11 > ret)
{
if (ferror(f))
{
printf("fread error\n");
fclose(f);
return 1;
}
else
{
if(feof(f))
{
printf("fread end-of-file");
fclose(f);
return 1;
}
}
clearerr(f);
}
printf("fread %s\n",buf);
fclose(f);
return 0;
}
运行结果: