2012-02-28 12 views
0

scanfを使用して小さなint(つまり、範囲-128.1.127の1バイト整数)を読み取る方法はありますか?このコードを考えてみましょう:scanfで小文字を読み取る

char x; 
scanf("%d", &x); 

プログラムは、INTを読んで、おそらく4バイト、したがって、このアドレスの後にメモリに来る3バイトに違反し、xのアドレスでそれを書くことを試みます。

私は短いint(%h)の修飾語があることを知っていますが、私は小さなint()については聞いていませんか?

+0

どのような言語ですか?まったく? CとC++は異なり、どちらも変種があります。 –

+0

[scanf( "%d"、char *) - char形式の文字列の可能な複製?](http://stackoverflow.com/questions/3036396/scanfd-char-char-as-int-format-文字列)または[ANSI C(ISO C90):スキャンして、未署名の文字を読み取る/受け入れることができますか?](http://stackoverflow.com/questions/2231056/ansi-c-iso-c90-can-scanf-read-accept- an-unsigned-char) –

+0

私は 'C++'タグを削除するつもりでした。 – Puppy

答えて

6

scanfは、charに読む"%hhd"フォーマット文字列が必要です。

+0

私はそれが標準だとは思わないでしょうか? –

+4

少なくともC99に入っています。 –

+1

あなたが正しいです(7.19.6.2.11) –

関連する問題