#include <stdio.h>
#include <stdlib.h>
void ce(FILE * p)//建议每当对文件进行I/O操作之后就要检测有没有读写错误,如果有就把这个错误清除
{
if(ferror(p))
{
printf("文件读写出错\n");
clearerr(p);
}
}
int main()
{
FILE * p=fopen("C:\\C语言\\test_10_24\\87.txt","r");
if(p==NULL)
{
printf("文件打开失败,程序退出\n");
exit(-1);
}
putc('A',p);
ce(p);
printf("%d\n",ferror(p)); //输出0,因为clearerr会把文件结束标志设置为0,即清除读写错误
/*
char ch;
while((ch=getc(p))!=EOF) //getc函数会在读入错误或者读到文件末尾时返回EOF,所以如果文件产生读写错误,则很有可能不会把p所指向的文件的全部内容读进来
putchar(ch);
*/
while(!feof(p)) //此种做法可以把文件中的全部内容读进来输出到屏幕上,只不过末尾会多输出一个值为EOF的文件结束符
{
putchar(getc(p));//当我们这个文件读到文件末尾时getc会返回一个EOF,所以这种做法比上一种做法多输出一个EOF
ce(p);
}
printf("%d\n",feof(p));//输出一个非0值,因为读写到达文件的末尾,当我们这个程序运行完while之后读写操作也就到了文件的末尾,所以此时文件结束标志feof是一个非0值
clearerr(p);//使用clearerr函数会把我们文件结束标志设置值为0
printf("%d\n",feof(p));//所以这里值为0
fclose(p);
return 0;
}
文件读写检测-正确应用
最新推荐文章于 2024-06-28 10:26:49 发布