Обработка данных из строки в C - PullRequest
2 голосов
/ 09 октября 2011

У меня есть формат данных ниже

int : int \t string

, например,

11:11     long long long description.

Я использую

sscanf(line, "%d:%d\t%s\n", &num1, &num2, &description)

, но он вырезает только первое слово из описания.
Как мне обработать данные из строки, чтобы получить все символы в описании с пробелами?

Ответы [ 3 ]

6 голосов
/ 09 октября 2011

Спецификация формата % s будет читать строку, пока не будет найден символ пробела.Если вы хотите прочитать все символы до \ n , вы можете сделать % [^ \ n] .Это говорит о прочтении символов до тех пор, пока этот символ отсутствует в наборе, содержащем символ новой строки.Обратите внимание, что завершающий \ n не читается им.Таким образом, окончательное решение будет:

sscanf(line, "%d:%d\t%[^\n]", &num1, &num2, description);
0 голосов
/ 09 октября 2011

, поскольку ваш формат довольно прост, я бы на вашем месте просто перебрал строку и обрезал ее в подходящих местах с \ 0, поскольку вы знаете, сколько частей должно быть.тем более надежный

0 голосов
/ 09 октября 2011

Попробуйте это:

sscanf(line, "%d : %d\t%s\n", &num1, &num2, &description)
...