初次见面,是计算机二级题里面
int main(int argc,char *argv)
听了一些别人的解释,有点懵懂:
argc是命令行中的参数个数,argv是一个指向char的指针数组,argv[0]指向存储第一个命令行参数的第一个字符,也就是说,如果你用输出语句对argv[0]进行输出,就可以得到这个指针的整个字符串。
cout<<argv[0]<<endl;
后来学习了关于命令行的命令使用呢,就对这样的参数有所明了。
相信大家用过cmd命令诸如:
cd C:\Windows
那么上面的命令是怎么实现的呢?cd其实算是个程序,它根据你后面的输入进行目录的查找并进行切换,结合上面的对两个参数(argc 和argv)的介绍,cd就是在命令行里的第一个参数,对应argv[0],后面"C:\Windows"就是第二个参数,对应argv[1],这两个就是两个字符串,这样的命令得出的argc值就是2。根据这两个参数的性质我们可以写一个简单的打招呼程序:程序名 (你要的输出名1) (你要的输出名2)…
得到的结果是:
Hello,输出名1!
Hello,输出名2!
…
Done.
程序如下:
#include <iostream>
#include <cstdlib> //for exit()
using namespace std;
int main(int argc, char *argv[])
{
if (argc == 1)
{
cout << "Usage: " << argv[0] << " name\n";
long wait = 0;
while (wait < 1000000000)
wait++; //结束得慢一点
exit(EXIT_FAILURE);
}//如果输入只有程序名,就会输出上面的语句强调用法,然后关闭程序
if (argc > 1)
{
int i;
for (i = 1; i < argc; i++)
cout << "Hello," << argv[i] << "!\n";
}
cout << "Done.\n";
system("pause");
return 0;
}
上面的程序运行就是模拟命令行参数那种运行,你可以在编译软件的终端(如vscode的终端)输入命令
.\test Jack H Jane
输出就是这样的
Hello,Jack!
Hello,H!
Hello,Jane!
Done.
如果你想要省去前面的./呢,可以把程序放进你的系统变量path里,这样就可以类似cd命令那样,直接写程序名调用程序。