2012-04-26 18 views
-3

Если у меня есть 3 источника типа «a b c», как мне отделить a от b от c?C программирование - анализ строки

struct target *t = target_start; 
    char *source_start = p_colon+1; 
    while (*source_start == ' ' || *source_start == '\t') 
     { source_start++; } 
    char *source_end = source_start; 
    while (*source_end == ' ' || *source_end == '\t') 
     { source_end--; } 
    char *p_space = strchr(source_start,' '); 
    //while(p_space != NULL) 

//list_sources_append(&sources, source_start); 
list_targets_append(&sources, t->source = source_start); 
source_end++; 
*source_end = '\0'; 
+2

было бы лучше использовать [ 'isspace()'] (HTTP: // Linux .die.net/man/3/isspace), чтобы определить, является ли '* source_start' пробелом. –

+1

@TimothyJones - Я согласен, но имейте в виду, что 'isspace' подсчитывает символы новой строки. Что-то нужно учитывать, если разрывы строк нужно обрабатывать отдельно. –

ответ

4

Поиск функции strtok() для разрыва строки в ряд токенов.

2

Предполагая, что имена файлов разделяются пробелами, и не содержат каких-либо пробелов, самый простой способ, вероятно, с sscanf(input, "%s %s %s", a, b, c);