Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/140.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/maven/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 使用sscanf的堆栈损坏_C++_Scanf_Stack Corruption - Fatal编程技术网

C++ 使用sscanf的堆栈损坏

C++ 使用sscanf的堆栈损坏,c++,scanf,stack-corruption,C++,Scanf,Stack Corruption,我有以下代码将2个十六进制数字转换为字节值: const char* data= "Some hex string"; unsigned char temp=' '; sscanf(data, "%2hhx", &temp); 当运行它时,我得到一个运行时异常,说 变量temp周围的堆栈已损坏 我做错了什么?AFAIK 2hhx应该将两个字节转换为一个…您确定您的编译器和标准库支持该特定说明符吗?它在C99中是新的 例如,根据以下说法,Microsoft不支持它: 这意味着hh可能被解

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

const char* data= "Some hex string";
unsigned char temp=' ';
sscanf(data, "%2hhx", &temp);
当运行它时,我得到一个运行时异常,说

变量temp周围的堆栈已损坏


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

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

例如,根据以下说法,Microsoft不支持它:


这意味着hh可能被解释为单个h,因此它需要指向无符号短字符的指针,而不是无符号字符。

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

例如,根据以下说法,Microsoft不支持它:


这意味着hh可能被解释为单个h,因此它需要指向无符号短字符的指针,而不是无符号字符。

您确定您的实现支持hh修饰符吗?您确定您的实现支持hh修饰符吗?是的,我可以用什么来代替?只需读入一个更大的整数即可。规范中的2仍然确保它不会读得比你想要的多。是这样的,我可以用什么来代替呢?只需读入一个更大的整数。规范中的2仍然确保它不会读得比您想要的多。