C - scanf unsigned char

时间:2016-04-10 15:47:54

标签: c scanf

我正在尝试使用scanf()来读取带有%hhu的无符号字符值,但编译器返回了我:

error: unknown conversion type character 'h' in format
 [-Werror=format]| // line 3 error: too many arguments for format
 [-Werror=format-extra-args]| // line 3 

使用以下代码:

printf("Enter a number: ");
unsigned char nb;
scanf("%hhu", &nb); // line 3
printf("Number: %u\n", nb);
return (nb);

1 个答案:

答案 0 :(得分:1)

可以找到关于此问题的讨论here。 这是MinGW特有的。
在讨论中的this评论中,该问题被标识为:

  

这很可能与错误https://sourceforge.net/p/mingw-w64/bugs/652/有关,因为包含顺序和编译器驱动程序实际上就C标准输出和格式说明符搞砸了。

建议的解决方案是:

  

始终定义__USE_MINGW_ANSI_STDIO,以便可以使用较新的ansi格式说明符,并确保在MSVC编译的代码和gcc编译的代码之间不传递长的double(至少)。