使用 sscanf 堆栈损坏
Stack corruption using sscanf
我有以下代码将 2 个十六进制数字转换为字节值:
const char* data= "Some hex string";
unsigned char temp=' ';
sscanf(data, "%2hhx", &temp);
运行时我得到一个运行时异常,说
变量温度周围的堆栈已损坏
我做错了什么?AFAIK 2hhx
应该将两个字节转换为一个...
您确定您的编译器和标准库支持该特定说明符吗?它是 C99 中的新功能。
例如,Microsoft不支持它,根据这个:
http://msdn.microsoft.com/en-us/library/xdb9w69d.aspx
这意味着hh
可能被解释为单个h
,因此它期望指向unsigned short
的指针,而不是unsigned char
。
相关文章:
- gdb错误:Backtrace已停止:上一帧与此帧相同(堆栈已损坏?)
- 变量周围的堆栈'...'已损坏
- 运行时检查失败 #2 变量"A"周围的堆栈已损坏
- 运行时检查失败 #2 - 变量"e"周围的堆栈已损坏。发生
- 变量周围的堆栈'sortArray'已损坏
- 变量周围的堆栈'folderPath'已损坏
- 运行时检查失败 #2 - 变量周围的堆栈'...'已损坏
- 运行时检查失败 #2 - 变量"l1"周围的堆栈已损坏
- 围绕变量的堆栈是损坏的 c++
- C++:此代码可以编译,但引发运行时检查失败 #2 - 围绕变量周围的堆栈'num'已损坏。发生
- 数组变量周围的堆栈已损坏
- 运行时检查失败 - 变量周围的堆栈已损坏
- 我的 c 字符串复制函数正在损坏其他变量的堆栈
- 调试:运行时检查失败 #2 - 变量"LoggerThread"周围的堆栈已损坏
- 将大双精度转换为无符号 int 期间堆栈损坏
- 运行时检查失败 #2 - 变量周围的堆栈'k'已损坏
- 运行时检查失败 #2 - 变量"数字选择"周围的堆栈已损坏
- 数组问题:变量周围的堆栈'arr'已损坏
- scanf int8_t损坏堆栈
- 如何在不损坏堆栈的情况下将 varargs 与__stdcall一起使用