即使使用正确的分隔符,strtok 也不能正确分割空格
strtok not splitting spaces correctly even with correct delimiter
我正在尝试拆分两个单词(以及更多单词)并通过使用 strtok 将其拆分为标记来将它们放入一个数组中。我的分隔符包括 " \t\n";
,如下面的代码所示。例如,如果我输入 "cat program.c"
,它只会打印 cat
标记而不是 program.c
标记,我不知道为什么。我的定界符不正确还是我没有正确拆分字符串?这是代码
char b[256];
int k = 0;
char *args[4];
char *tokens;
char delimiters[] = " \t\n";
printf("Please enter the command you want to use:\n");
scanf("%255s", b);
tokens = strtok(b, delimiters);
while (tokens != NULL){
args[k++] = tokens;
printf("%s\n",tokens);
tokens = strtok(NULL, delimiters);
}
问题不是 strtok()
,而是 scanf()
。 %s
字段指令扫描 空格分隔的 字符串,因此当输入为 cat program.c
时,只有“猫”会进入数组 b
首先。 ( program.c
仍然等待读取。)如果你想一次读取整行输入,那么我建议使用 fgets()
,而不是。
我正在尝试拆分两个单词(以及更多单词)并通过使用 strtok 将其拆分为标记来将它们放入一个数组中。我的分隔符包括 " \t\n";
,如下面的代码所示。例如,如果我输入 "cat program.c"
,它只会打印 cat
标记而不是 program.c
标记,我不知道为什么。我的定界符不正确还是我没有正确拆分字符串?这是代码
char b[256];
int k = 0;
char *args[4];
char *tokens;
char delimiters[] = " \t\n";
printf("Please enter the command you want to use:\n");
scanf("%255s", b);
tokens = strtok(b, delimiters);
while (tokens != NULL){
args[k++] = tokens;
printf("%s\n",tokens);
tokens = strtok(NULL, delimiters);
}
问题不是 strtok()
,而是 scanf()
。 %s
字段指令扫描 空格分隔的 字符串,因此当输入为 cat program.c
时,只有“猫”会进入数组 b
首先。 ( program.c
仍然等待读取。)如果你想一次读取整行输入,那么我建议使用 fgets()
,而不是。