3

fscanf または fgets 関数で空白を無視する方法があるかどうか疑問に思っていました。テキスト ファイルには、各行に 2 つの文字があり、スペースで区切られている場合と区切られていない場合があります。2 つの文字を読み取り、それぞれを別の配列に配置する必要があります。

file = fopen(argv[1], "r");
if ((file = fopen(argv[1], "r")) == NULL) {
    printf("\nError opening file");
}
while (fscanf(file, "%s", str) != EOF) {
    printf("\n%s", str);
    vertexArray[i].label = str[0];
    dirc[i] = str[1];
    i += 1;
}
4

1 に答える 1

6

fscanf形式でスペース(" ")を使用すると、非空白文字が見つかるまで入力の空白が読み取られて破棄され、入力の非空白文字が次に読み取られる文字として残ります。したがって、次のようなことができます。

fscanf(file, " "); // skip whitespace
getc(file);        // get the non-whitespace character
fscanf(file, " "); // skip whitespace
getc(file);        // get the non-whitespace character

また

fscanf(file, " %c %c", &char1, &char2); // read 2 non-whitespace characters, skipping any whitespace before each
于 2012-11-09T22:27:27.703 に答える