我正在尝试拆分两个(或更多)单词,并通过使用strtok将其拆分为令牌将它们放入数组中。我的分隔符包括" tn";
,如下面的代码所示。例如,如果我要输入"cat program.c"
,它只打印cat
令牌而不是program.c
令牌,我不知道为什么。是我的分隔符不正确还是我没有正确分割字符串?下面是代码
char b[256];
int k = 0;
char *args[4];
char *tokens;
char delimiters[] = " tn";
printf("Please enter the command you want to use:n");
scanf("%255s", b);
tokens = strtok(b, delimiters);
while (tokens != NULL){
args[k++] = tokens;
printf("%sn",tokens);
tokens = strtok(NULL, delimiters);
}
问题不是strtok()
,而是scanf()
。%s
字段指令扫描以空格分隔的字符串,因此当输入为cat program.c
时,只有"cat"从来没有把它放到数组b
中。(program.c
仍然等待读取。)如果您想一次读取一整行输入,那么我建议您使用fgets()
。