strtok函数在第二次调用中返回NULL值

时间:2013-11-10 20:09:04

标签: c

我有这样的输入字符串A,B: A ' B * A B ' * +

我正在尝试使用strtok来划分它,这是我的代码和输出

    int main(int argc, char **argv)
{
    char *vars;
    char *formula;
    vars = strtok(argv[1],":");
    formula = strtok(NULL,":");
    printf("%s %s\n", vars,formula);

}

A,B <null>

为什么,当我第二次打电话给strtok时,它会返回null

2 个答案:

答案 0 :(得分:4)

很可能argv[1]只包含A,B:,因为shell遇到空格作为命令行参数的分隔符。要将整个序列放在argv[1]中,您需要使用引号,即:

./myprogram "A,B: A ' B * A B ' * +"

尝试打印argv[1]以确保您获得正确的参数。

答案 1 :(得分:1)

使用

运行程序

./test "A,B: A ' B * A B ' * +"请注意双引号

test - 可执行文件的名称