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

标签 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 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);

}

最佳答案

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

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

如果您同时更改 fscanf,它会按预期工作

关于c - 从文件中读取整数并忽略 C 中的空格,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19205631/

相关文章:

html - 如何删除 h1 标签中文本周围的默认空格

在不使用字段数的情况下检查 scanf(..) 是否成功——有办法吗?

ocaml - 接收 Stdlib.Scanf.Scan_failure : character '\\n'

c - IEEE 浮点表示

c - C语言文件I/O

c - m 和 n 之间的素数

c - C 中的 Fscanf 用于存储文件中的数据

c - 使用 C 中的数组修复输出中的小错误

html - 有效修改 HTML 中的空白显示 :

Linux 密码管理器修剪密码中的尾随空格