我是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:这是一个字符串,你知道吗
ch:这个
此
此
此
此
此
此
然而,输出应该是
欲望输出
cmd:这是一个字符串,你知道吗
ch:这个
是
一
的字符串
和
fyunck
在
注意:我不允许使用外部库。
P.S 我正在尝试复制此代码,Code
答案 0 :(得分:1)
请注意:
while ((ch = strtok(NULL, " ")) != NULL)
printf("%s\n", cmd);
您正在更新ch
,并输出cmd
,但仍保持不变。
要解决此问题,只需将其更改为:
while ((ch = strtok(NULL, " ")) != NULL)
printf("%s\n", ch);
答案 1 :(得分:1)
你只是在最后一行打印错误的变量。
更改
printf("%s\n", cmd);
到
printf("%s\n", ch);
它应该没问题。