关于c语言文件读写最后一行重复的问题
2017-03-06 14:31
721 查看
这几天忙于做课程设计 在初步完成后,出现了文件末尾重复读取的问题
操作系统使用的是ubuntu 16.04 linux下不支持fflush函数
首先采用小程序测试
写入文件:
而产生的文件如下:
haha 5 lala
hehe 5 lele
hihi 5 lili
huhu 5 lulu
读文件运行结果:
![](http://img.blog.csdn.net/20170306142713985?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQva2lkbGFsYWxh/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center)
最后一行信息重复 而在我的课程设计中 显示的则为多出一行 但是不是重复 而是有一行显示0
根据网上所查资料,问题应该是当我选择feof判断文件是否结束时 文件最后的回车符也被读入
但是具体为何出现这两种情况 目前还未明白
解决方法为 改用fscanf的返回值来判断文件读入是否结束
即 fscanf()!=x
操作系统使用的是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
相关文章推荐
- 关于Linux下feof()输出文件最后一行时重复的问题
- 关于c++文件流读取最后一行数据时重复或者出错问题
- 关于.JS文件保存编码格式的问题-兼容各种语言版本
- MySQL游标修改记录——解决最后一行重复的问题
- Android开发中关于文件读写的一个小问题
- linux c读取配置文件打印多出输出最后一行问题
- 在C++ 重复读取文件中的最后一行的解决办法
- 关于文件读写,线程超时终止问题
- 关于tp3.2.3文件导入数据库(去除重复数据)、写日志和下载问题
- 关于头文件重复包含以及函数重定义问题
- 关于Create NSManagedobjectModel SubClass 文件编译出现Duplicate Symbol 重复引用的问题
- 关于设置table样式后,不停点击按钮table中的数据会逐渐被最后一行替换的问题
- plsql游标最后一行重复的问题
- unity关于各个平台文件读写问题
- C语言文件读写操作中缓冲区问题和setbuf函数详解
- 读文件最后一行数据重复出现解决办法
- 【C++】C++ 读取文件最后一行产生的问题
- c++文件读取最后一行读取两次的问题
- Thinkphp关于文件上传重复的问题
- 关于C/C++使用stdio读写文件的问题