0

単語 N から開始し、次の N + M 単語をハッシュし (元のポインターが移動しないように別の関数を介して連結および実行される)、N を指している FILE ポインターを次の単語にインクリメントする必要があるプログラムがあります語。

これを行う唯一の方法は、スペースが見つかるまで FILE ポインターをインクリメントし、次の単語の最初の文字が見つかるまでさらにインクリメントすることでした。これは、私が読んでいるファイルの単語間に複数のスペースが含まれている可能性があるため、同じ単語の内容で単一のスペースを持つファイルと比較して、一致する文字列にならない可能性があるためです。

ungetc()ストリームから次の単語の最初の文字を取得したため、このメソッドが必要になります。

別の実装に関するアイデアはありますか、それともこの方法にかなり制限されていますか?

    while ( (c = fgetc(fileToHash) != ' ' )
        ;
    while( (c = fgetc(fileToHash)) == ' ')
        ;
    ungetc(c, fileToHash); 
4

3 に答える 3

0

fscanf を使用して、空白で区切られた単語を読み取ることができます。この例では、標準入力から各単語を読み取り、それぞれを新しい行に出力します。

char buf[128];
while (fscanf(stdin, "%s", buf) > 0)
    puts(buf);
于 2014-01-29T06:30:18.037 に答える