Повреждение стека с использованием sscanf

У меня есть следующий код для преобразования 2 шестнадцатеричных цифр в значение байта:

const char* data= "Some hex string";
unsigned char temp=' ';
sscanf(data, "%2hhx", &temp);

При запуске я получаю исключение времени выполнения, говоря

стек вокруг переменной temp поврежден

Что я делаю неправильно? насколько мне известно 2hhx следует преобразовать два байта в один …

1

Решение

Вы уверены, что ваш компилятор и стандартная библиотека поддерживают этот конкретный спецификатор? Это новое в C99.

Microsoft, например, не поддерживает это, согласно этому:

http://msdn.microsoft.com/en-us/library/xdb9w69d.aspx

Это означает, что hh вероятно, интерпретируется как единый h и поэтому ожидает указатель на unsigned shortне unsigned char,

5

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]