LINUX.ORG.RU

gcc, scanf. bug или кривые руки?


0

0

Имеется простой код, который не работает. Не могу понять почему scanf так себя ведёт.

bash-3.1$ gcc -O2 -o test test.c
bash-3.1$ strip --strip-unneeded test
bash-3.1$ ./test
hex : a7
A7
Ошибка сегментирования
bash-3.1$ cat test.c
#include <stdio.h>
#include <stdint.h>

int main(int argc, char *argv[])
{
        uint8_t a;
        printf("hex : ");
        scanf("%X", &a);
        printf("%X\n", a);
        fflush(stdout);
        return 0;
}
bash-3.1$ gcc --version
gcc (GCC) 4.2.3
Copyright (C) 2007 Free Software Foundation, Inc.
Это свободно распространяемое программное обеспечение. Условия копирования
приведены в исходных текстах. Без гарантии каких-либо качеств, включая
коммерческую ценность и применимость для каких-либо целей.
★★★

Гы. Даже если ввести '0', то всё равно сегфолт.

GArik ★★★
() автор топика

Компилятор при попытке скомпилировать как бы намекает тебе

test.c:8: предупреждение: формат ‘%X’ предполагает тип ‘unsigned int *’, но аргумент 2 имеет тип ‘uint8_t *’

anonymous
()
Ответ на: комментарий от anonymous

Всё, уже понял =)
Написал scanf("%hhX", &a); и всё стало замечательно.

GArik ★★★
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.