使用sscanf堆栈损坏

时间:2014-02-24 13:15:04

标签: c++ scanf stack-corruption

我有以下代码将2个十六进制数字转换为字节值:

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

运行时,我遇到运行时异常,说

  

变量temp周围的堆栈已损坏

我做错了什么? AFAIK 2hhx应该将两个字节转换为一个......

1 个答案:

答案 0 :(得分:5)

您确定您的编译器和标准库支持该特定说明符吗?它是C99中的新功能。

例如微软不支持它,根据这个:

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

这意味着hh可能被解释为单个h,因此需要指向unsigned short而不是unsigned char的指针。