总览
一个程序的main()函数的可以包括两个参数
- 第一个参数的类型为int型;
- 第二个参数为字符串数组。
通常情况下,将第一个参数命名为argc,第二个参数为argv(当然参数名字可以换)。由于字符串数组有两种表达方式,因此,main函数存在两种书写方法:
- 形式一:
int main(int argc, char* argv[])//这里使用char* argv[]
{
return 0;
}
2。 形式二:
int main(int argc, char** argv)//这里使用char ** argv
{
return 0;
}
使用方法
参数的含义
int argc:表示字符串的数量 argc=1+用户输入的字符串数目,操作系统负责计算数量,程序员不用管,只需要正确使用即可,例如用户输入2个字符串,argc=1+2=3;char* argv[]:字符串的数组,即多个字符串,形式如下:
argv[0]=可执行文件名称,例如test.exe(非用户输入,操作系统根据可执行文件名称自动生成)
argv[1]= 字符串1
argv[2]=字符串2
argv[3]=字符串3需要传入哪些参数?
两个参数作为函数的形参,需要从某个神秘的人传入参数,负责这件事的就是操作系统;那么作为使用者需要输入哪些参数呢?第一个参数 int argc 不用管!!!!操作系统会自动根据第二个参数传入数字;
若用户输入N个字符串,那么argc= N + 1;第二参数为用户输入的一系列字符串,字符串之间以空格间隔,形式为:
字符串1 字符串2 字符串3
注意:操作系统会自动加入一条字符串(程序名称)到字符串数组中,因此,最终的字符串数数组长度为N+1。在代码编码使用字符串内容时,需要注意字符串的索引号注意: 最终操作系统存储的字符串数组为,
argv[0]=可执行文件名称,例如test.exe
argv[1]= 字符串1
argv[2]=字符串2
argv[3]=字符串3
如果要使用用户输入的第一个字符串 应该是argv[1],而非argv[0]
代码编写时怎么使用
代码编码人员只要弄懂两个参数的含义,在使用时牢牢把握参数的类型。第一个参数为整型,第二个参数为字符串数组。若参数类型不满足程序最终的类型,就要进行类型转换,主要表现在字符串和数字之间的转换,例如将字符串 argv[1]=”21321”转换为整型变量,可以使用 int temp=atoi(argv[1]);
//一个依赖命令行参数的的加减计算器控制台程序
int main(int argc,char* argtest[])
{
cout << "总共有 " << argc << " 个参数" << endl;
for (int i = 0; i < argc; ++i)
{
cout << argtest[i] << endl;
}
system("pause");
if (argc != 4)
{
printf("输入参数有误");
return 0;
}
if ((**(argv + 1)) == '-')
{
switch (*(*(argv + 1) + 1))//等效于*(argv[1] + 1)
{
case 'a':
printf("%d\n", atoi(argv[2]) + atoi(argv[3]));
break;
case 's':
printf("%d\n", atoi(argv[2]) - atoi(argv[3]));
break;
case 'm':
printf("%d\n", atoi(argv[2]) * atoi(argv[3]));
break;
case 'd':
printf("%d\n", atoi(argv[2]) / atoi(argv[3]));
break;
default:
printf("无此命令,请重新运行\n");
break;
}
}
return 0;
}
编程模式下输入方法
如果正在visual studio这种平台下进行程序的编写,调试时可以打开项目的属性窗口进行参数输入,参数之间空格相隔:
用户在cmd窗口输入方法
打开cmd窗口后,将可执行文件拖入窗口,根据程序要求的符串数量输入字符串,并以空格分开各个字符串,输入结束后回车即可。