Имеется простой код, который не работает. Не могу понять почему 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.
Это свободно распространяемое программное обеспечение. Условия копирования
приведены в исходных текстах. Без гарантии каких-либо качеств, включая
коммерческую ценность и применимость для каких-либо целей.