我有这样的输入字符串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
?
答案 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 - 可执行文件的名称