У меня есть строка, которая содержит информацию, разделенную |символы, и мне нужно создать подстроки для каждой части информации. Кроме того, некоторые поля могут быть пустыми.
Порядок значений: FirstName | LastName | Age | IDNumber | Рост | Вес
Таким образом, возможные строки могут быть:
char * strA = "Джон | Доу | 50 | 123456 | 70 | 150";char * strB = "James | Smith | 40 | 345678 ||";
Я могу вытащить первое поле очень хорошо, используя sscanf, но когда я пытаюсь получить несколько полей, я получаю неправильные значения.
Чтобы получить первое значение, я могу вызвать
char* strA = "John|Doe|50|123456|70|150";
char* a, b;
sscanf(strA, "%[^|]|", &a);
printf("%s\n", &a);
, который печатает John
Но когда я пытаюсь получить первые 2 поля, вызвав
char* strA = "John|Doe|50|123456|70|150";
char* a, b;
sscanf(strA, "%[^|]|%[^|]|", &a, &b);
printf("%s | %s\n", &a, &b);
Он печатает oe | Doe
Я не могу понять, почему это так.