C 如何计算文件中的位数?

C 如何计算文件中的位数?,c,io,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"); e

这是错误的。我的代码怎么了

#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;
}
您只需检查一次
input
。您应该检查
num
input
是一个
文件

while ((fscanf(input, "%d", &num)) == 1){
    printf("%d", num);
    if (isdigit(num))
        numCount++;
}
您只需检查一次
input
。您应该检查
num
input
是一个
文件

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

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

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

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

如果你要计算一些东西,numCount++应该在一个循环中,而不是在整个程序中测试一次字符,而不是文件*


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

,你遇到了什么样的错误,编译器错误或运行时错误,或者它没有按你希望的方式工作?这些可能会帮助您得到一些答案C2664“isdigit”不能从“FILE*”更改为“int”。您需要考虑“isdigit”的作用。不要让参数类型(int)迷惑您。它检查一个字符,如果传递的参数是数字,则返回非零。您肯定不希望在代码中使用fscanf调用。您遇到了什么样的错误,编译器错误或运行时错误,或者它没有按您希望的方式工作?这些可能会帮助您得到一些答案C2664“isdigit”不能从“FILE*”更改为“int”。您需要考虑“isdigit”的作用。不要让参数类型(int)迷惑您。它检查一个字符,如果传递的参数是数字,则返回非零。您肯定不希望在代码中使用fscanf调用。num由fscanf中的“%d”设置,isdigit正在查找0-9个字符的ASCII值。“%d”也应更改为“%c”,或者更好的是,fgetcnum由fscanf中的“%d”设置,isdigit正在查找0-9个字符的ASCII值。“%d”也应该更改为“%c”,或者更好的是,等等