如何计算文件中的数字?

时间:2009-12-12 08:37:50

标签: c io

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

#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;
}

3 个答案:

答案 0 :(得分:2)

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

答案 1 :(得分:1)

while ((fscanf(input, "%d", &num)) == 1)
    printf("%d", num);

if (isdigit(input))
    numCount++;

您只需检查input一次。您应该检查num,而inputFILE

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

答案 2 :(得分:1)

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

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