您的位置:首页 > 编程语言 > C语言/C++

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

2017-03-06 14:31 721 查看
这几天忙于做课程设计 在初步完成后,出现了文件末尾重复读取的问题

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

首先采用小程序测试

写入文件:

#include<stdio.h>
#include<stdlib.h>
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<stdio.h>
#include<stdlib.h>
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
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: