2012-02-28 5 views
0

Есть ли способ прочитать небольшой int (то есть 1-байтовый int диапазона -128..127) с использованием scanf? Рассмотрим этот код:Чтение малого int с помощью scanf

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

Программа будет читать в Int, вероятнее всего 4 байта, и попытаться записать его по адресу х, тем самым нарушив 3 байта, которые приходят в памяти после этого адреса.

Я знаю, что существует модификатор для короткого int (%h), но я не слышал об одном для small int (char)?

+0

Какой язык? В точку? C и C++ разные, и у обоих есть варианты. –

+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) –

+0

Упс, хороший улов, я хотел удалить тег 'C++'. – Puppy

ответ

6

scanf"%hhd" формат строки для чтения в char.

+0

Я не думаю, что это стандарт, не так ли? –

+4

Это, по крайней мере, в C99. –

+1

Вы правы (7.19.6.2.11) –

Смежные вопросы