-1

我有这样的输入字符串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

4

2 回答 2

4

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

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

尝试打印argv[1]以确保您得到正确的论点。

于 2013-11-10T20:12:35.500 回答
1

运行你的程序

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

测试 - 可执行文件的名称

于 2013-11-10T20:12:58.000 回答