2011-04-16 3 views
0

У меня есть файл, в котором каждая строка содержит несколько слов, которые разделены переменным количеством пробельных символов (пробелов и вкладок). Например:Разбор строки в C

do that param1 param2 param3 
do this param1 

(количество слов в строке заранее неизвестно и неограничен)

Я ищу способ синтаксического анализа такой линии в простом C, так что я У меня есть указатель на строку, содержащую первое слово, указатель на строку, содержащую второе слово, и указатель на строку, содержащую все остальное (то есть - всю строку, за исключением первых двух слов). Идея состоит в том, что строка «остальная часть строки» будет дополнительно проанализирована функцией обратного вызова, определяемой двумя первыми словами).

Получение первых двух слов достаточно просто (простой sscanf), но я понятия не имею, как получить указатель «остальная часть строки» (как sscanf останавливается в пробеле, и я не знаю, сколько пробел перед первым словом, а также между первым и вторым словом).

Любая идея будет принята с благодарностью.

+3

Это было так много раз покрыто stackoverflow. Найдите функцию strtok, а также используйте окно поиска на этой странице. – karlphillip

+1

http://stackoverflow.com/questions/2160199/reading-characters-from-a-stream-up-to-whitespace-using-isspace-in-c/2160209#2160209 – karlphillip

+0

Я думал об использовании 'strtok' и 'strcat', но я надеялся, что может быть более элегантное решение. – IgKh

ответ

2

Вы также можете использовать sscanf для остальной части линии. Вы просто используете преобразование «сканирование» вместо преобразования строк:

char word1[256], word2[256], remainder[1024]; 

sscanf(input_line, "%255s %255s %1023[^\n]", word1, word2, remainder); 
+0

Элегантный и делает трюк. Спасибо! – IgKh

Смежные вопросы