Когда вы смотрите на источник вопроса, в большинстве строк есть 13 шестнадцатеричных чисел, что является необычным числом для выбора.Таким образом, мы, вероятно, можем просто предположить, что входные данные представляют собой последовательность шестнадцатеричных чисел, разделенных пробелами.
Следовательно, мне (как и некоторым комментаторам) было бы логично использовать функцию gethex()
дляпрочитайте следующую информацию.
int gethex(void)
{
int x;
if (scanf("%2x", &x) != 1)
x = -1;
return x;
}
Это может быть использовано для чтения символов:
int oc = 0;
int c;
while ((c = gethex()) != -1)
{
if (oc != 0x0A || c != 0x0A)
{
oc = c;
continue;
}
/* Read to 0x0A in a row - proceed as required */
int a, b, c;
if ((a = gethex()) == -1 ||
(b = gethex()) == -1 ||
(c = gethex()) == -1)
...error - unexpected EOF (or other format error)...
... Process a, b, c ...
}
Обратите внимание, что это останавливается, если в данных есть ошибка - aсимвол, отличный от шестнадцатеричного или пробела.