Я новичок в CСинтаксический указатель строки в C - Устранение
Я пытаюсь разобрать строку с помощью «пространства» и «запятые», строки, *ch
указывая, но я получаю первый элемент только. Не уверен, что я делаю неправильно, и я потратил весь свой день на это, но все еще не мог понять.
#include <stdio.h>
#include <string.h>
int main(){
char *ch = "This is a string, and fyunck you.";
char cmd[100], *temp;
int i = 0, size_ch = strlen(ch), count = 0;
/* as strtok only support string array */
for (i = 0; i < size_ch; i++){
if (ch[i] != ','){
cmd[count] = ch[i];
count++;
}
}
cmd[count] = '\0';
printf("cmd: %s\n", cmd);
ch = strtok(cmd, " ");
printf("ch: %s\n", ch);
while ((ch = strtok(NULL, " ")) != NULL)
printf("%s\n", cmd);
}
Выходные
CMD: Это строка и fyunck вам
Хорнер: Это
Это
Это
Этот
Это
Это
Это
тогда, вывод должен быть
Желание Выход
CMD: Это строка и fyunck вам
ч: Этот
является
строка
и
fyunck
вы
Примечание: Мне не разрешено использовать внешние библиотеки.
P.S Я пытаюсь скопировать этот код, Code
Последняя строка печатает 'cmd', но я думаю, что вы хотите напечатать' ch'. Вы также можете посмотреть на 'strsep (3)', что немного проще в работе и поддерживает несколько разделителей. – bnaecker
В последнем цикле 'printf ("% s \ n ", cmd);' должен быть 'printf ("% s \ n ", ch);' –
LOL, это сработало .... Не могу поверить, что я потратили весь мой день на эту глупую ошибку. –