C - scanf unsigned char

问题描述 投票:7回答:1

我试图使用scanf()%hhu读取unsigned char值,但编译器返回了我:

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);
c scanf
1个回答
1
投票

关于这个问题的讨论可以在here找到。这是MinGW特有的。 来自this在讨论中的评论,该问题被确定为:

这很可能与bug https://sourceforge.net/p/mingw-w64/bugs/652/有关,因为include命令和编译器驱动程序实际上与C标准输出和格式说明符有关。

并提出的解决方案是:

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

© www.soinside.com 2019 - 2024. All rights reserved.