2

コード内のstdinからの16進入力をトラバースしていますが、0xffバイトに達したときにコードの停止を回避できないことに気付きました。私はこれがループが:であるために起こることを知っています

while( (c=getchar()) != EOF)

ただし、これを除外することはできません。そうしないと、getcharが実際のEnd-Of-Fileの後に呼び出され、segfaultが発生するためです。入力全体を正しくトラバースするにはどうすればよいですか?

(申し訳ありませんが、この一見一般的なタスクには簡単な答えがあるはずですが、しばらく検索してみましたが、何も見つかりませんでした)

4

1 に答える 1

6

ccharとして宣言しましたが、をgetchar()返しますint。Cの正しいループ構造は次のとおりです。

int c;
while ( (c = getchar()) != EOF ) {
  // use c here.
}
于 2012-04-23T00:40:29.550 に答える