Простой вопрос: 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 преобразование может использоваться в этой ситуации?
Прочтите его в беззнаковом коротком / int и при необходимости сделайте некоторую проверку диапазона после.
Кодирование того, что уже упомянули другие:
var success = false;
var attempts = 0;
var maxAttempts = 0;
do {
attempts++;
try {
/* your code */
success = condition;
} catch(SuperciliousException e) {
/* recover */
}
} while(!success && attempts < maxAttempts);
-121--2768684- Цвет в строке совпадает с цветом, которым выделен текст в редакторе. Это установлено, идя в
Окно> Предпочтения> Общий> Редакторы> Редакторы текста> Аннотации
и изменяя Occurrences, и Напишите цвета Occurrences.
-121--753403- Нет: C89 (C90) не поддерживает '% hhu'
для считывания последовательности цифр в неподписанный символ. Это особенность C99.
Необходимо считать целое число без знака ( '% u'
) или короткое число без знака ( '% hu'
), а затем проверить, что результат соответствует диапазону символа без знака.