1


私のプログラムでは、関数 fgets を呼び出しています。

char * fgets ( char * str, int num, FILE * stream );  

数回ループしてから、新しく来る入力を処理します(ある場合)。

fgets 仕様では、次のように述べています。

num: 読み取る最大文字数 (最後のヌル文字を含む)。通常、str として渡された配列の長さが使用されます。

問題は、指定された num を超えないようにリーンしたいということです。同じ行にある場合は、残りの部分を無視します。

私が見つけたのは、関数への次の呼び出しで fgets が行の次の部分を読み取ることです。

どうすればこの動作を回避できますか?

4

2 に答える 2

1

手動で行う必要があります。fgets改行文字が見つかるまで文字を使用して結果を結果配列にコピーし、内容をダンプして、続行しfgetsます。

于 2011-05-25T21:15:38.323 に答える
0

size パラメーターは、バッファーが保持できる以上のデータを読み取らないようにするために使用することを目的としています。データをスキップする場合は機能しません。

文字列を読み取った後に不要な部分を破棄するコードを作成する必要があります。

fgets() は古い C 関数です。アイデアは、言語が、好きなことをするために組み合わせることができる最小限の複雑さの機能を提供するということです。意図的に追加の機能が含まれているわけではありません。これにより、誰もが使用しないものにお金を払う必要がなくなります。レゴを考えてみてください。

于 2011-05-25T21:19:49.477 に答える