统计文件里面数字个数问题
- 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字符串来转换并格式化数据。
他并不会如楼主想的那样智能的判定是否整型,非整型其实也会读取的.
楼主想要的判断整数个数,只能是自己读取所有文件内容,并判断是否整数.如果是整数则统计.
[解决办法]