C语言的文件读取问题

断桥残雪断桥残雪 发布于 2015/05/16 22:57
阅读 154
收藏 0

我的代码是这样的:

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);
}

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

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

加载中
0
铂金胖子
铂金胖子
#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/
断桥残雪断桥残雪
断桥残雪断桥残雪
嗯嗯,你的做法是对的,大神! 但是为什么我的程序最后一个整数多读了一次呢??
0
Force武装卫队
Force武装卫队
else 的时候又被加入一次
Force武装卫队
Force武装卫队
有BOM也会读进去
断桥残雪断桥残雪
断桥残雪断桥残雪
回复 @Force武装卫队 : 与编码有什么关系
Force武装卫队
Force武装卫队
文件什么编码
断桥残雪断桥残雪
断桥残雪断桥残雪
貌似不是这个原因。。。
0
铂金胖子
铂金胖子

文件最后有空行吧?

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

铂金胖子
铂金胖子
回复 @寻雾启示 : while(fgetc) 这行已经读了一次文件流。
断桥残雪断桥残雪
断桥残雪断桥残雪
貌似不是这个原因
0
梁金堂
梁金堂
逻辑混乱,
断桥残雪断桥残雪
断桥残雪断桥残雪
是链表问题。 这里没有给出完整程序
断桥残雪断桥残雪
断桥残雪断桥残雪
看不懂就算了
返回顶部
顶部