使用 sscanf 堆栈损坏

Stack corruption using sscanf

本文关键字:损坏 堆栈 sscanf 使用      更新时间:2023-10-16

我有以下代码将 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