表示即使使用正确的分隔符也不能正确分割空格



我正在尝试拆分两个(或更多)单词,并通过使用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()

相关内容

  • 没有找到相关文章

最新更新