读书人

统计文件里面数字个数有关问题

发布时间: 2012-02-16 21:30:36 作者: rapoo

统计文件里面数字个数问题

C/C++ code
 #include <stdio.h> void main() {    int i=0,j;    FILE *p;     if ((p=fopen("xwz.txt","r"))==NULL) {        printf("can not open the file\n");        exit(0);    }        while(!feof(p)){        fscanf(p,"%d",&j);        i++;       }    fclose(p);    printf("%d ",i);}

我想统计文件里面int型数字的个数,但是文件里面有20个数字是,输出是对的,文件里面有24个数时,输出23。不知道是什么原因。哪位大哥帮看看。

[解决办法]
sf
[解决办法]
通过fscanf返回值做个判断.
[解决办法]
你这样使用的话,除非保证文件中都是整型数字
否则肯定会出错的。
[解决办法]
看看你文件
[解决办法]
晕,是4L的
[解决办法]
难道是RP问题?
[解决办法]
程序在我这上面正确呢,没出现你说的问题啊
你看看你的文件内容对不对?
[解决办法]
没问题,是你人品有问题。。。 :)
[解决办法]
fscanf(格式化字符串输入)
相关函数 scanf,sscanf

表头文件 #include<stdio.h>

定义函数 int fscanf(FILE * stream ,const char *format,....);

函数说明 fscanf()会自参数stream的文件流中读取字符串,再根据参数format字符串来转换并格式化数据。格式转换形式请参考scanf()。转换后的结构存于对应的参数内。

返回值 成功则返回参数数目,失败则返回-1,错误原因存于errno中。

附加说明

范例 #include<stdio.h>
main()
{
int i;
unsigned int j;
char s[5];
fscanf(stdin,”%d %x %5[a-z] %*s %f”,&i,&j,s,s);
printf(“%d %d %s \n”,i,j,s);
}

执行 10 0x1b aaaaaaaaa bbbbbbbbbb /*从键盘输入*/
10 27 aaaaa

注意:fscanf()会自参数stream的文件流中读取字符串,再根据参数format字符串来转换并格式化数据。
他并不会如楼主想的那样智能的判定是否整型,非整型其实也会读取的.

楼主想要的判断整数个数,只能是自己读取所有文件内容,并判断是否整数.如果是整数则统计.

[解决办法]
探讨
我文件里面的都是int 其它类型的先不考虑
文件是
22 8
44 87
4 9
23 32
11 99
75 8
23 45
8 9
91 34
1 7
8 8

输出23 真是奇怪

读书人网 >C语言

热点推荐