Как получить массив из этой строки? - PullRequest
0 голосов
/ 12 ноября 2010

, поэтому у меня есть следующая строка

BOOK_NAME_VALUE STRING Programming

мне нужно, чтобы массив содержал это

a[0] = "BOOK_NAME";
a[1] = "VALUE";
a[2] = "STRING";
a[3] = "Programming";

2-е значение массива - последняя часть 1-й части строки; разделитель строк - это пробел '' разделитель 1-й части '_'

так есть идеи ??

UPDATE

Я сделал это для 2-го процесса разделения, нужен более короткий путь ??

#include<string.h>

char **str_tok(char *str,char* d){
    char *out[2];
    char *s;
    char *c;
    int toks = noToks(str,d);
    int i = 0;

    s = strtok(str,d);
    i++;
    while(i != toks){
        strcat(s, d);
        c = strtok(NULL,d);
        i++;
        strcat(s,c);
    }
    strcpy(out[0],s);
    c = strtok(NULL,d);
    strcpy(out[1], c);

    return out;
}

int noToks(char *str,char *d){
    int c = 0;

    while(*str)
        if(*str == *d){
            c++;
            str++;
        }
    return c;
}

Ответы [ 2 ]

1 голос
/ 12 ноября 2010

Сначала разбить строку на пробелы , что даст три строки (массив).
Затем просто найдите последний '_' в первой строке в массиве строк сверху.
Объедините все в новый массив.

Я бы добавил немного кода, но это ужасно просто, и если вы изучаете C, я предлагаю поискать функции самостоятельно. Я дал вам направление.

Надеюсь, это поможет.

1 голос
/ 12 ноября 2010

Взгляните на функцию strtok, которая используется для разделения строк в соответствии с набором указанных разделителей.

Прочитайте здесь , чтобы найти документацию по функции и некоторые примеры .. в основном вы звоните

char *cur = strtok(your_string," ");

для получения первой строки, а затем можно продолжать вызывать функцию с аргументом NULL для получения последовательных фрагментов:

while (cur != NULL) {
  // do whatever
  cur = strtok(NULL," ");
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...