这是错误的。我的代码出了什么问题?
#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;
}
答案 0 :(得分:2)
你的逻辑是完全错误的。您应该使用fgetc()读取单个字符,然后使用isdigit()进行测试。当fgetc()返回EOF时,循环应该终止。
答案 1 :(得分:1)
while ((fscanf(input, "%d", &num)) == 1)
printf("%d", num);
if (isdigit(input))
numCount++;
您只需检查input
一次。您应该检查num
,而input
是FILE
。
while ((fscanf(input, "%d", &num)) == 1){
printf("%d", num);
if (isdigit(num))
numCount++;
}
答案 2 :(得分:1)
isdigit()测试一个字符,而不是文件*。
如果你要计算一些东西,numCount ++应该在循环中,而不是整个程序中的