如何计算文件中的数字?

这是错误的。 我的代码出了什么问题?

#include "stdafx.h" #include "stdlib.h" #include "ctype.h" int _tmain(int argc, _TCHAR* argv[]) { FILE* input; int num; int numCount = 0; input = fopen("123.txt", "r"); if (!input) { printf("No file \a\n"); exit (101); } while ((fscanf(input, "%d", &num)) == 1) printf("%d", num); if (isdigit(input)) numCount++; printf("number count: %d", numCount); return 0; } 

你的逻辑是完全错误的。 您应该使用fgetc()读取单个字符,然后使用isdigit()进行测试。 当fgetc()返回EOF时,循环应该终止。

 while ((fscanf(input, "%d", &num)) == 1) printf("%d", num); if (isdigit(input)) numCount++; 

您只检查input一次。 而你应该检查numinput是一个FILE

 while ((fscanf(input, "%d", &num)) == 1){ printf("%d", num); if (isdigit(num)) numCount++; } 

isdigit()测试一个字符,而不是文件*。

如果你要计算一些东西,numCount ++应该在一个循环中,而不是在整个程序中