永发信息网

急!C语言~从文件里读出的最后一个数据重复了

答案:1  悬赏:0  手机版
解决时间 2021-01-03 22:06
以下是代码:
#include"stdio.h"
main()
{FILE *fp=NULL;
char ch;
fp=fopen("a.txt","r");
while(!feof(fp))
{fscanf(fp,"%c",&ch);
printf("%c",ch);
}

那个文本文件里的数据是abc
但输出到屏幕上却是abcc
即多出了个c
但我用fputc(ch);输出数据却正常,这说明是fscanf出问题了?这是怎么回事?如果不改动fscanf这个语句,而是改动其他语句,要怎么改?(其实我写了个比较长的程序,出现了上述问题,上面的代码只是个缩影,原程序一定要用到fscanf,所以这个语句不能改)
最佳答案
原因我也还没想明白,我也遇到过这种情况。其实严格来说,你用fgetc时也是会有小小的错误的,那就是在输出abc后后面还会输出一段空白。
改成:
#include"stdio.h"
main()
{FILE *fp=NULL;
char ch;
fp=fopen("a.txt","r");
fscanf(fp,"%c",&ch);
while(!feof(fp))
{
printf("%c",ch);
fscanf(fp,"%c",&ch);
}
}
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
镇隆供电所(公交站)位置在什么地方啊,我要过
太阳能热水器在冬天一般被照射几个小时之后就
惠东供电局调度大楼地址在哪?我要去那里办事
方程x2-8x+6=0的左边配成完全平方式后,所得
用Audition怎么给一首歌降调
双拼怎么打词组啊··2个字 3个字 或者更多怎
把996000000改写成用“亿”做单位的数,并保
万年牢题目具体的含义
The reporters exposed the corruption (腐败
中国南方电网惠州供电局(江菱路)地址在哪?我
“我简直难以相信”的英文翻译是?
尿液的形成主要包括________和________两个过
什么是预见能力,如何训练预见能力?
___ buy your ticket from a ticket machi
人心的含义是什么
推荐资讯
韩国车有哪些品牌标志
the programme, they have to stay there for
动物年龄问题那一种动物的寿命和人类接近啊假
判断题量筒口处有一“缺口”其作用是便于倾倒
砍字粤语怎么读
宝宝经常打喷嚏是怎么回事?
陈奕天喜欢男的还是女的
奥拉星俩只星魔的技能效果可以重叠吗
用陈和于这两个姓想一对情侣网名,谢谢啦!
草地上有14只黑羊,白羊的只数是黑羊的3倍,
若配制5%的双氧水,应取30%的双氧水(密度1.1
英派斯健身会所(英派斯)地址有知道的么?有点
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?