2012-02-28 52 views
0

是否有方法使用scanf來讀取小int(即範圍爲-128..127的1字節int)?考慮以下代碼:使用scanf讀取小int int

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

該程序將讀取一個int,最有可能的4個字節,並嘗試將其在X的地址寫,從而違反了3個字節來在該地址後的內存。

我知道有一個short int修飾符(%h),但我還沒有聽說過一個小int(char)?

+0

什麼語言?究竟? C和C++是不同的,並且都有變體。 – 2012-02-28 20:31:14

+0

可能重複[scanf(「%d」,char *) - char-as-int格式字符串?](http://stackoverflow.com/questions/3036396/scanfd-char-char-as-int-format-字符串)或[ANSI C(ISO C90):可以scanf讀取/接受一個無符號字符?](http://stackoverflow.com/questions/2231056/ansi-c-iso-c90-can-scanf-read-accept- an-unsigned-char) – 2012-02-28 20:32:33

+0

哎呀,很好,我打算刪除'C++'標記。 – Puppy 2012-02-28 20:37:00

回答

6

scanf需要"%hhd"格式字符串讀入char

+0

我不認爲這是標準的,是嗎? – 2012-02-28 20:31:05

+4

至少在C99中。 – 2012-02-28 20:32:06

+1

你是對的(7.19.6.2.11) – 2012-02-28 20:33:47