ANSI C (ISO C90):scanf 可以读取/接受无符号字符吗?

发布于 2024-08-21 15:22:30 字数 527 浏览 8 评论 0原文

简单的问题:scanf 可以将“小整数”读取/接受到 ANSI C 中的无符号字符中吗?

示例代码 un_char.c:

#include <stdio.h>
#include <stdlib.h>

int main(void)
{
    unsigned char character;

    scanf("%hhu", &character);

    return EXIT_SUCCESS;
}

编译为:

$ gcc -Wall -ansi -pedantic -o un_char un_char.c
un_char.c: In function ‘main’:
un_char.c:8: warning: ISO C90 does not support the ‘hh’ gnu_scanf length modifier

hh 不受 ISO C90 支持。那么在这种情况下可以使用什么scanf转换呢?

Simple question: Can scanf read/accept a "small integer" into an unsigned char in ANSI C?

example code un_char.c:

#include <stdio.h>
#include <stdlib.h>

int main(void)
{
    unsigned char character;

    scanf("%hhu", &character);

    return EXIT_SUCCESS;
}

Compiled as:

$ gcc -Wall -ansi -pedantic -o un_char un_char.c
un_char.c: In function ‘main’:
un_char.c:8: warning: ISO C90 does not support the ‘hh’ gnu_scanf length modifier

hh isn't supported by ISO C90. So what scanf conversion can be used in this situation?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

蹲墙角沉默 2024-08-28 15:22:30

否:C89 (C90) 不支持 '%hhu' 将数字字符串读入 unsigned char。这是C99 中的一个功能。

您必须读入无符号整数 ('%u') 或无符号短整型 ('%hu'),然后检查结果是否在无符号字符。

No: C89 (C90) does not support '%hhu' to read a string of digits into an unsigned char. That is a feature in C99.

You would have to read into an unsigned integer ('%u') or unsigned short ('%hu') and then check that the result is with the range of an unsigned char.

时光与爱终年不遇 2024-08-28 15:22:30

将其读入无符号短整型/整数,并在需要时进行一些范围检查。

Read it into an unsigned short/int and do some range checking after if you need to.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文