| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1578 人关注过本帖
标题:fscanf()函数的多读一个整数
只看楼主 加入收藏
xparmenides
Rank: 1
等 级:新手上路
帖 子:4
专家分:0
注 册:2013-1-5
结帖率:0
收藏
已结贴  问题点数:20 回复次数:6 
fscanf()函数的多读一个整数
下面的C程序运行时会多读入一个整数,如何解决?

#include <stdio.h>
#include <stdlib.h>
#define MAX_LEN        32

void print(int *keys, int len)
{
  int i;

  for (i = 1; i <= len; i++)
    printf("%d\t", keys[i]);

  printf("\n");
}

int main()
{
  FILE *fp;
  int keys[MAX_LEN];
  int len = 0, i;
 
  fp = fopen("sort.txt", "rt");
  if (!fp){
    printf("Can not open input file.\n");
    exit(-1);
  }

  i = 1;
  while ( !feof(fp) )
    fscanf(fp, "%d", &keys[i++]);
  len = i - 1;

  print(keys, len);
  close(fp);

  return 0;
}

sort.txt内容如下:

49 38 65 97 76 13 27 49

在Linux中运行结果:

49      38      65      97      76      13      27      49      1


搜索更多相关主题的帖子: 如何 file include 
2013-01-05 00:38
azzbcc
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:江西财经大学
等 级:贵宾
威 望:81
帖 子:3293
专家分:12919
注 册:2012-11-4
收藏
得分:7 
win7表示结果正确,莫非楼主的文件中在这组数后敲了换行?

楼主试试 %d + 空格

[ 本帖最后由 azzbcc 于 2013-1-5 00:45 编辑 ]


[fly]存在即是合理[/fly]
2013-01-05 00:42
xparmenides
Rank: 1
等 级:新手上路
帖 子:4
专家分:0
注 册:2013-1-5
收藏
得分:0 
木有啊
2013-01-05 00:45
xparmenides
Rank: 1
等 级:新手上路
帖 子:4
专家分:0
注 册:2013-1-5
收藏
得分:0 
我用GCC编译,不知道有没有影响?

2013-01-05 00:47
xparmenides
Rank: 1
等 级:新手上路
帖 子:4
专家分:0
注 册:2013-1-5
收藏
得分:0 
%d 后面加空格就解决了,谢谢!
2013-01-05 00:49
神龙赖了
Rank: 10Rank: 10Rank: 10
来 自:萨塔星
等 级:青峰侠
威 望:2
帖 子:711
专家分:1788
注 册:2012-10-13
收藏
得分:7 
WINDOS和LINUX中换行符的概念是不同的

I have not failed completely
2013-01-05 21:09
Fisher~
Rank: 4
等 级:业余侠客
帖 子:93
专家分:222
注 册:2012-11-10
收藏
得分:7 
 while ( !feof(fp) )
    fscanf(fp, "%d", &keys[i++]);
改为
fscanf(fp, "%d", &keys[i++]);

 while ( !feof(fp) )
    fscanf(fp, "%d", &keys[i++]);
feof函数的用法是判断文件是否位于文件末尾,你之前的用法是大家一般的写法都会出现多读的问题,用下面这种写法可以先读取在判断,可以避免多读的问题
2013-01-06 21:23
快速回复:fscanf()函数的多读一个整数
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.015898 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved