Я пытался заставить sscanf
распознать довольно простой формат, используя классы символов.Я заметил, что когда я предоставляю sscanf
char*
для соответствия классу символов, он перезаписывает предыдущий байт также, как если бы он ожидал указатель на 2 байта.
Упрощенная версия того, что я 'm пытается выполнить:
#include <stdio.h>
int main(void)
{
char num1;
char num2;
int s;
s = sscanf("1,2", " %[01234567] , %[01234567]", &num1, &num2);
printf("%d %c %c\n", s, num1, num2);
return 0;
}
Ожидаемый вывод: 2 1 2
Фактический вывод: 2 2
Но если я заменю char
на short
(или что-то большее, чем байт), тогда он работает, как и ожидалось, но я получаю предупреждения о format expects type char*
.
Какого типа должен быть аргумент или я делаю какую-то другую ошибку?