15

簡単な質問:scanfは、ANSICのunsignedcharに「小さな整数」を読み取って受け入れることができますか?

サンプルコード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

hhISOC90ではサポートされていません。では、この状況で使用できるscanf変換は何でしょうか。

4

2 に答える 2

12

'%hhu'いいえ: C89 (C90) は、数字の文字列を unsigned char に読み取ることをサポートしていません。これは C99 の機能です。

'%u'unsigned integer ( ) または unsigned short ( )を読み込ん'%hu'でから、結果が unsigned char の範囲であることを確認する必要があります。

于 2010-02-09T18:03:56.747 に答える
3

unsigned short/int に読み込み、必要に応じて範囲チェックを行います。

于 2010-02-09T17:30:40.493 に答える