以下是代码:
#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,所以这个语句不能改)
急!C语言~从文件里读出的最后一个数据重复了
答案:1 悬赏:0 手机版
解决时间 2021-01-03 22:06
- 提问者网友:你独家记忆
- 2021-01-03 19:13
最佳答案
- 五星知识达人网友:末日狂欢
- 2021-01-03 19:32
原因我也还没想明白,我也遇到过这种情况。其实严格来说,你用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);
}
}
改成:
#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);
}
}
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯