【发布时间】:2021-12-06 21:11:28
【问题描述】:
我正在尝试拆分两个单词(以及更多)并将它们放入一个数组中,方法是使用 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);
}
【问题讨论】:
-
scanf("%255s", b);哎哟。您关心为您的输入提供一个长度限制,但随后您使用了一个与缓冲区相差甚远的值:char b[100];
标签: arrays c command-line-arguments strtok