0

私は C を学んでおり、C で書いているプログラムの一部は、txt ファイルに含まれる値が 81 より少ないか多いか、およびすべての値が整数であるかどうかをチェックすることです。fscanf を使用してファイルから値を読み取りますが、空白も読み取ります。空白を無視して、整数または文字のみを読み取るにはどうすればよいですか?

私のコードは、81 個の整数と空白を含む 162 を返します。

これは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);

}
4

1 に答える 1

1

の出力変数を渡す必要がありfscanfます。コードがクラッシュしていないことに驚いています。

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

両方を変更すると、期待どおりに機能しfscanfます

于 2013-10-06T05:13:22.413 に答える