scanf
を使用して小さなint(つまり、範囲-128.1.127の1バイト整数)を読み取る方法はありますか?このコードを考えてみましょう:scanfで小文字を読み取る
char x;
scanf("%d", &x);
プログラムは、INTを読んで、おそらく4バイト、したがって、このアドレスの後にメモリに来る3バイトに違反し、xのアドレスでそれを書くことを試みます。
私は短いint(%h
)の修飾語があることを知っていますが、私は小さなint()については聞いていませんか?
scanf
を使用して小さなint(つまり、範囲-128.1.127の1バイト整数)を読み取る方法はありますか?このコードを考えてみましょう:scanfで小文字を読み取る
char x;
scanf("%d", &x);
プログラムは、INTを読んで、おそらく4バイト、したがって、このアドレスの後にメモリに来る3バイトに違反し、xのアドレスでそれを書くことを試みます。
私は短いint(%h
)の修飾語があることを知っていますが、私は小さなint()については聞いていませんか?
scanf
は、char
に読む"%hhd"
フォーマット文字列が必要です。
私はそれが標準だとは思わないでしょうか? –
少なくともC99に入っています。 –
あなたが正しいです(7.19.6.2.11) –
どのような言語ですか?まったく? CとC++は異なり、どちらも変種があります。 –
[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) –
私は 'C++'タグを削除するつもりでした。 – Puppy