【发布时间】:2011-11-26 15:43:36
【问题描述】:
我在 C 中使用 strtok 时遇到问题。我使用 fgets 从命令行获取用户输入,我想用管道(“|”)作为分隔符对其进行标记,并将结果放入双指针变量中。这是我的代码:
char** argv;
char *token;
token = strtok(userInput, "|");
while(token != NULL){
*(argv++) = token;
token = strtok(NULL, "|");
}
*argv = '\0';
然后我使用此代码来验证它是否被很好地标记
while(*argv!= NULL)
{
if((strcmp(*argv, "|") == 0){
count = count + 1;
}
argv++;
}
printf("%d pipes", count);
但它不起作用。 char** argv 不包含任何内容。代码的执行停止并返回-1。当我尝试打印 argv 时,argv 不包含任何值。
有什么想法吗?谢谢。
编辑:
我想做的是这个
userInput = "abc|cde";
使用 strtok 后。我想要一个 **argv
**argv = "abc";
【问题讨论】:
-
但它不起作用。到底发生了什么?
-
当你说它不起作用时,你得到了什么错误?
-
“不起作用”是什么意思?该代码完全按照您的要求执行。这可能与您的预期不同,但如果您不愿意告诉我们,则无法猜测。
-
对不起,如果我不清楚。我的意思是 char** argv 什么都不包含。代码的执行停止并返回-1。当我尝试打印 argv 时,argv 不包含任何值。