c ++ main函数,如果命令行参数包含*,则argc值很奇怪

时间:2015-04-01 11:34:42

标签: c++ argc

这样一段非常简单的C ++代码:

int main(int argc, char **argv){
    std::cout << "argc: " << argc << std::endl;
}

使用g++ -o hello hello.cpp

编译
  • ./hello u一起投放时,输出为argc: 2;
  • ./hello u +一起投放时,输出为argc: 3;
  • ./hello u *合作时,输出为argc: 26,为什么26

2 个答案:

答案 0 :(得分:10)

壳牌扩张。 *由shell扩展为当前目录中的所有文件,其中似乎有24个,并将它们作为单独的参数传递给您的程序。

由于这看起来像来自UNIX shell的调用,请使用

./hello u \*

./hello u '*'

答案 1 :(得分:0)

您需要传递shell在' '中解释为特殊字符的内容。

所以正确的命令行调用应该是./hello u '*'