Мне нужно прочитать (с sscanf
) целое число, соответствующее uint32_t
. Это число задается в шестнадцатеричной системе счисления. Какой формат мне следует использовать для чтения и печати такого числа?
@ i486 Лучше всего научиться делать что-то на собственном горьком опыте. Поэтому ты никогда больше этого не сделаешь. ;-)
У вас есть специальные макросы в заголовочном файле inttypes.h
#include <stdint.h>
#include <stdio.h>
#include <inttypes.h>
int main(void)
{
uint32_t x;
if (scanf("%" SCNx32, &x) == 1)
{
printf("Scanned successfully. The value is %" PRIx32 "\n", x);
}
else
{
printf("scanf error\n");
}
}
И аналогично для sscanf()
.
Незначительно, ИМХО, поскольку имена функций чувствительны к регистру, лучше как printf("scanf error\n");
или printf("Error: scanf()\n");
Почему бы не
strtoul()
вместоsscanf
?