从文件中读取整数并忽略C中的空格

从文件中读取整数并忽略C中的空格,c,whitespace,scanf,C,Whitespace,Scanf,我在学习C语言,我用C语言编写的程序的一部分是检查我的txt文件是否包含小于或大于81个值,以及所有值是否都是整数。我使用fscanf从文件中读取值,但它也读取空白。如何忽略空白并使其成为只读整数或字符 我的代码返回162,其中包含81个整数和空格 这是txt文件: 1 2 3 4 5 6 7 8 9 2 3 4 5 6 7 8 9 1 3 4 5 6 7 8 9 1 2 4 5 6 7 8 9 1 2 3 5 6 7 8 9 1 2 3 4 6 7 8 9 1 2 3 4 5 7 8 9 1

我在学习C语言,我用C语言编写的程序的一部分是检查我的txt文件是否包含小于或大于81个值,以及所有值是否都是整数。我使用fscanf从文件中读取值,但它也读取空白。如何忽略空白并使其成为只读整数或字符

我的代码返回162,其中包含81个整数和空格

这是txt文件:

1 2 3 4 5 6 7 8 9
2 3 4 5 6 7 8 9 1
3 4 5 6 7 8 9 1 2
4 5 6 7 8 9 1 2 3
5 6 7 8 9 1 2 3 4
6 7 8 9 1 2 3 4 5
7 8 9 1 2 3 4 5 6
8 9 1 2 3 4 5 6 7
9 1 2 3 4 5 6 7 8


#include<stdio.h>

int main() {
FILE * input_values;

input_values = fopen("text.txt","r");

    if (input_values == NULL) {
        fprintf(stderr, "Error! Could not open file.\n");
    }

int ch, counter = 0;

ch = fscanf(input_values, "%d");
    while (ch != EOF) {
            counter++;
            ch = fscanf(input_values, "%d");
    }

    printf("num %i",counter);
    fclose(input_values);

}
123456789
2 3 4 5 6 7 8 9 1
3 4 5 6 7 8 9 1 2
4 5 6 7 8 9 1 2 3
5 6 7 8 9 1 2 3 4
6 7 8 9 1 2 3 4 5
7 8 9 1 2 3 4 5 6
8 9 1 2 3 4 5 6 7
9 1 2 3 4 5 6 7 8
#包括
int main(){
文件*输入_值;
输入_值=fopen(“text.txt”,“r”);
if(输入值==NULL){
fprintf(stderr,“错误!无法打开文件。\n”);
}
int ch,计数器=0;
ch=fscanf(输入_值,“%d”);
while(ch!=EOF){
计数器++;
ch=fscanf(输入_值,“%d”);
}
printf(“num%i”,计数器);
fclose(输入_值);
}

您需要为
fscanf
传入一个输出变量,我很惊讶您的代码没有崩溃:

int num;
fscanf(input_values, "%d", &num);

如果您同时更改了
fscanf

,那么它将按预期工作。您没有为整数向fscanf传递输出变量。非常感谢。它起作用了。如何检查txt文件中是否有非整数?检查
fscanf
的返回值,如果遇到非整数,它将返回
0