2012-04-23 9 views
2

私のコードでstdinから16進数の入力をトラバースしていますが、0xffバイトに達したときにコードを停止することができません。私はループがあるので、これが起こることを知っている:それ以外の場合は、実際のエンド・オブ・ファイルの後に呼ばれると、それがセグメンテーション違反れるGETCHARのでC++で0xffを持つ可能性のある16進入力をトラバースする

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

しかし、私はこれを残すことはできません。どのようにして完全な入力を正しくトラバースできますか?

(申し訳ありませんが、私はこの一見共通のタスクに簡単な答えがあるべきことを知っているが、私はいくつかの時間を探してみましたし、何も見つからなかった)

+0

中(!(C = getchar関数())= EOF)の体があれば実行され、あなただけ読んだ値はEOFでない場合のみ。私はそこにエラーがあるとは思わない。もっとコードをお願いします。 – ScarletAmaranth

答えて

6

あなたはcharとしてcを宣言しましたが、getchar()intを返します。正しいループは、Cのために構築され、この:

int c; 
while ((c = getchar()) != EOF) { 
    // use c here. 
} 
関連する問題