0

辞書ファイルを 1 行ずつ読み取り、各行を取得して文字列と比較しています。私の問題は、空白を削除するためにすべての行に文字列の長さを動的に割り当てる方法がわからないことです。私のコードを見てから、これについて説明します。

FILE *f;
f = fopen("/usr/share/dict/words", "r");
if (f != NULL)
{
    // maximum size of line, keep it at 128 just in case
    char line[128] = "";

    // run through every line of file
    while (fgets(line, sizeof(line), f))
    {
        if (strcmp("hello", line) == 0)
            printf("The string is %s!", line);
    }
}

したがって、「行」変数を初期化して、任意の行の最大長を取る必要があります。行がその値の 128 よりも小さい場合、末尾に空白が追加され、無効な比較が行われるだけです。これを変更するにはどうすればよいですか?

4

1 に答える 1

1

いいえ、大量の空白を追加するのではなくfgets、バッファに改行を残します。したがって、通常、末尾の空白文字は 1 つです。修正する

int len = strlen(line);
if (line[len-1] == '\n') {
    line[len-1] = 0;
}
于 2012-09-22T23:26:34.220 に答える