为什么用EOF来判断fscanf不好使呢?

纯净水o 2009-07-21 03:42:32
当fscanf返回失败的时候是不是返回EOF啊 为什么不好使呢

#include<stdio.h>
#include<stdlib.h>
main()
{
FILE *fp;
char ch,ch1;
if(!(fp=fopen("f:\\123.c","r")))
{
printf("读取错误");
exit(1);
}
fscanf(fp,"%c",&ch);
while(ch!=EOF)/********/
{
printf("%c",ch);
fscanf(fp,"%c",&ch);
}
}
为什么输出完文件之后,却一直输出最后一个字呢?比如我的文件内容为123
输出的结果却是1233333333333333333333.。。。。
...全文
1178 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
bladesoft 2009-07-21
  • 打赏
  • 举报
回复
Eof运用错误
bxl1989 2009-07-21
  • 打赏
  • 举报
回复
EOF应该不是什么字符吧。这么读,读到什么时候都读不出EOF(-1)的值吧。
clhposs 2009-07-21
  • 打赏
  • 举报
回复
LS正解
challenge99 2009-07-21
  • 打赏
  • 举报
回复
不是fscanf不好使,是你代码写的不好....

while(EOF != fscanf(fp, "%c", &ch)
printf("%c", ch);

--------------------------------------------------
fscanf
语法: #include <stdio.h>
int fscanf( FILE *stream, const char *format, ... );


函数fscanf()以scanf()的执行方式从给出的文件流中读取数据. fscanf()的返回值是事实上已赋值的变量的数,如果未进行任何分配时返回EOF.
agshion 2009-07-21
  • 打赏
  • 举报
回复
函数名: fgetc
  功 能: 从流中读取字符
  用 法: int fgetc(FILE *stream);
函数说明
  fgetc()从参数stream所指的文件中读取一个字符。若读到文件尾而无数据时便返回EOF。
  返回值
  fgetc()会返回读取到的字符,若返回EOF则表示到了文件尾。
这里用,fgetc()吧,我不知道fscanf()到文件尾是不是返回EOF,但fgetc()是,建议你还是用fgetc()吧

70,038

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧