У меня есть какое-то задание по курсу программирования. Я беру этот термин на C, и у меня возникли проблемы с использованием функции sscanf
.
Программа фактически должна получить от пользователя строкуданные студента в следующей форме:
<ID> <NAME> <GRADE> <AGE> <COUNTRY> <CITY>
У нас есть некоторые ограничения в отношении формы каждого поля, например, поле идентификатора должно состоять из 10 цифр и не начинаться с 0.
Важная вещь с вводом: пользователь должен написать свои данные, где они разделены табуляцией (\ t).
Поэтому я попытался разбить его на поля, используя sscanf
. Я думал, что если я использую [^\t\n ]
, тогда он «поймет», что это одно поле.
Проблема связана с sscanf
, вот мое использование функции:
// Parse his details
sscanf(line, "%[^\t\n]\t%[^\t\n ]\t%u\t%u\t%[\t\n ]\t%[\t\n]\t", tmpStudent.ID, tmpStudent.name,
&tmpStudent.grade, &tmpStudent.age, tmpStudent.country, tmpStudent.city);
Но когда я запускаю программу, переменная ID «съедает» поле имени, а поле имени остается пустым.
Как мне решить эту проблему?
Спасибо.