关于c语言文件读写最后一行重复的问题

这几天忙于做课程设计 在初步完成后,出现了文件末尾重复读取的问题

操作系统使用的是ubuntu 16.04     linux下不支持fflush函数

首先采用小程序测试

写入文件:

#include
#include
int main()
{
		FILE *fp=fopen("haha.txt","w");
		fprintf(fp,"%s %d %s\n","haha",5,"lala");
		fprintf(fp,"%s %d %s\n","hehe",5,"lele");
		fprintf(fp,"%s %d %s\n","hihi",5,"lili");
		fprintf(fp,"%s %d %s\n","huhu",5,"lulu");
		fclose(fp);
		return 0;
}
读文件

#include
#include
int main()
{
		FILE *fp=fopen("haha.txt","r");
		char t[100],temp[100];
		int n;
		while(!feof(fp))
		{
				fscanf(fp,"%s %d %s",t,&n,temp);
				printf("%s %d %s\n",t,n,temp);
		}
		fclose(fp);
		return 0;
}

而产生的文件如下:

haha 5 lala
hehe 5 lele
hihi 5 lili
huhu 5 lulu


读文件运行结果:


最后一行信息重复  而在我的课程设计中 显示的则为多出一行    但是不是重复  而是有一行显示0

根据网上所查资料,问题应该是当我选择feof判断文件是否结束时  文件最后的回车符也被读入

但是具体为何出现这两种情况  目前还未明白

解决方法为  改用fscanf的返回值来判断文件读入是否结束

即 fscanf()!=x


你可能感兴趣的:(关于c语言文件读写最后一行重复的问题)