2016-11-20 2 views
0

Я просмотрел связанные темы, попробовал некоторые примеры и не нашел ничего, что мне помогло.Разделение строки C

Я беру строку для ввода, например, символ ул [50] имеет следующий формат Удалить 1 1 Remove может быть еще одно слово, которое имеет разную длину может быть количество целых чисел больше, чем 2 мне нужно каждый часть строки, которая будет храниться в различных переменных для числовых значений Int, если это возможно

Я попытался с зЬгстр stracat strtok strstr, но, видимо, я что-то отсутствует

char str[] = "Remove 2 3 2"; 
char * pch; 
char split[50]; 
printf("Splitting string \"%s\" into tokens:\n", str); 
pch = strtok(str, " "); 
while (pch != NULL) { 
    printf("%s\n", pch); 
    strcat(split,pch); 
    printf("\nThe string is %s",split); 
    pch = strtok(NULL, " "); 
} 

Это моя последняя попытка. То, что я пытаюсь сделать, это удалить пробельные символы, тогда, вероятно, я смогу идентифицировать слово позади Remove, например. если он удаляется или это другое слово с strstr. Но как разделить числовые значения? И это мой результат, как избавиться от этих символов.

The string is ��_o�Remove2 

    The string is ��_o�Remove23 

    The string is ��_o�Remove232 

    The string is ��_o�Remove232 
+0

что удалила CHARS спасибо @ user3121023 –

ответ

0

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

просто проверить пространство и игнорировать их

char str[] = "hi 1 2 3"; 
    char store[100]; 
    int i=0,j=0; 

    for(i = 0,j = 0; i <= strlen(str); i++){ 
     if(str[i] != 32) { // value of space is 32 
       store[j] = str[i]; 
       j++; 
     } 
    } 

    for(i = 0; i < strlen(store); i++){ 
     printf("%c\n",store[i]); 
    } 

выход:

h 
i 
1 
2 
3 
1

strcat concatenates. Я считаю, что вы хотите получить разделенные части по одному, а не конкатенировать их.

Так что лучше попробовать что-то вроде этого:

char split[MAX_NUM_TOKENS][50]; 
int num_tokens = 0; 

И вместо strcat, использовать что-то вроде:

strcpy(split[num_tokens], *pch); 
printf("The string is %s\n",split[num_tokens]); 
num_tokens++; 
+0

Я думаю, что я сделал то, что вы сказали, и я только отпечатались Строка Удалить Несколько раз [ссылка] http://pastebin.com/mn337qXY –

+0

Хорошо, я действительно получил ошибку сегментации –

+0

@ThomasJeffrey Да. strcpy должен иметь «pch» вместо «* pch». Виноват. –

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