开发者社区> 问答> 正文

C语言的文件读取问题:报错

我的代码是这样的:

void main()
{
  PNode pNode;
  FILE *fp=fopen("1.txt","r");
  int count=0;
  while(getc(fp)!=EOF) {
    int i;
    fscanf(fp,"%d",&i);
    if(count==0) {
    pNode=Create(i);
    count=1;
    }
    else {
    pNode=Add(i,pNode);
    }
  }
  fclose(fp);
  Print(pNode);
}

就是读取文件中的整数,然后向链表中添加。

但是问题是这个程序的结果是文件的最后一个整数被读取了两次了,不知道为什么???

展开
收起
kun坤 2020-06-07 22:18:14 537 0
1 条回答
写回答
取消 提交回答
  • #include <stdio.h>
    #include <stdlib.h>
    void main()
    {
      FILE *fp=fopen("1.txt","r");
      int count=0;
      int i;
      i = 0;
      while(fscanf(fp,"%d",&i)!=-1) {
        printf("%d\n",i);
      i=0;
      }
      fclose(fp);
    

    }



    ######回复 @寻雾启示 : 大概就是这个吧: http://blog.163.com/shao_yuru/blog/static/130517606201121394349886/######嗯嗯,你的做法是对的,大神! 但是为什么我的程序最后一个整数多读了一次呢??######else 的时候又被加入一次######有BOM也会读进去######回复 @Force武装卫队 : 与编码有什么关系######文件什么编码######貌似不是这个原因。。。######

    文件最后有空行吧?

    最好在程序里判断一下 fscanf 的返回值

    ######回复 @寻雾启示 : while(fgetc) 这行已经读了一次文件流。######貌似不是这个原因######逻辑混乱,######是链表问题。 这里没有给出完整程序######看不懂就算了
    2020-06-07 22:18:19
    赞同 展开评论 打赏
问答分类:
问答地址:
问答排行榜
最热
最新

相关电子书

更多
低代码开发师(初级)实战教程 立即下载
冬季实战营第三期:MySQL数据库进阶实战 立即下载
阿里巴巴DevOps 最佳实践手册 立即下载