Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/security/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何获得正确的C++命令行参数数?_C++_Ubuntu - Fatal编程技术网

如何获得正确的C++命令行参数数?

如何获得正确的C++命令行参数数?,c++,ubuntu,C++,Ubuntu,我开始我的节目时 int main (int argc, char *argv[]) { printf("%d \n", argc); 然后我使用g++在Ubuntu中编译,并使用 ./calc 2 3 4 + * ./calc 2 3 4 + "*" 但是程序输出17!我也对参数进行了打印,它们是: arg 0: ./calc arg 1: 2 arg 2: 3 arg 3: 4 arg 4: + arg 5: 1.2.c arg 6: 1.3.c arg 7: 1

我开始我的节目时

int main (int argc, char *argv[]) {
    printf("%d \n", argc);
然后我使用g++在Ubuntu中编译,并使用

./calc 2 3 4 + *
./calc 2 3 4 + "*"
但是程序输出17!我也对参数进行了打印,它们是:

arg 0: ./calc 
arg 1: 2 
arg 2: 3 
arg 3: 4 
arg 4: + 
arg 5: 1.2.c 
arg 6: 1.3.c 
arg 7: 1.4.c 
arg 8: 2.1.c 
arg 9: 2.2.c 
arg 10: 2.3.c 
arg 11: 2.4.c 
arg 12: 3.2.c 
arg 13: 3.4.c 
arg 14: 4.1.c 
arg 15: a.out 
arg 16: calc 

但显然这不是我所期望的。如何更正此问题?

shell正在计算*以表示当前目录中的所有文件。您应该使用\*.

将linux shell解释为*目录中所有文件的列表来转义星号。请尝试使用\e来转义它

./calc 2 3 4 + \*