前言
命令行参数:
● 命令行参数是控制命令执行的一种方式。
● 命令行参数类似于函数的参数,只是命令行参数是传送给命令的。命令执行时,内核已经将命令行参数放入命令的栈中,命令执行时则可以获取命令行参数,解析,执行。
● 命令行参数使命令可以执行不同任务。
linux系统下的实现:
#include <stdio.h>
int main(int argc, char *argv[])
{
printf("%d\n",argc);
printf("%s\n",argv[0]);
printf("%s\n",argv[1]);
printf("%s\n",argv[2]);
}
在这个例子中,我们给main函数传递两个参数:argc,argv:
● argc是int类型的,它表示的是命令行参数的个数。不许要用户传递,它会根据用户从命令行输入的参数个数,自动确定。
● argv是char* argv[]类型的,即是指针数组类型,它的作用是存储用户从命令行传递进来的参数。它的第一个成员是程序执行的.exe文件。
● main函数还有一个参数是envp,是一个 指针数组类型,每个元素存储指向一个环境变量的字符指针。这里不予赘述。
对于上面的例子,我们将其保存为test.c,用gcc编译生成目标文件为a.out
编译结果如下:
执行结果如下:
这里第一个输出的是argc,因为我们只输入了./a.out,所以argc为1,即只有一个命令行参数。后面输出的第一个命令行参数也是./a.out。接着程序就出错了,因为程序要说输出第二、第三参数,而后面已经没有第二个和第三个参数了,在写实际的应用时,应注意对这一部分进行容错处理。所谓容错处理就是指软件运行时,能对由非正常因素引起的运行错误给出适当的处理或信息提示,使软件运行正常结束。而这个错误也就是程序员很容易犯得段错误。
当在命令行输入./a.out、linux、nihao三个参数时,执行结果如图:
命令行参数个数为3,第一个参数./a.out、第二个参数linux、第三个参数nihao。
当输入./a.out、”linux nihao”、hehe、”hi apple”四个参数时,执行结果如图:
当输入四个参数,命令行参数个数就为4,但需要注意的是就是如果一个参数之间有空格,需要用双引号引起来,以免产生不必要的错误。
当然对于具体情况请看下图:
结语
对于main函数第二个参数argv,其数据类型可以写成三种形式:
char *argv[]、char **argv、char argv[][],当然第三个函数参数envp同理。
部分资料来源于网络,版权属其原著者所有,只供学习交流之用。如有侵犯您的权益,请联系【公众号:码农印象】删除,可在下方评论,亦可邮件至ysluckly.520@qq.com。互动交流时请遵守宽容、换位思考的原则。