【C语言】浅析(命令行参数 )&&(main函数参数)

命令行参数:

命令行参数是控制命令执行的一种方式。 
命令行参数类似于函数的参数,只是命令行参数是传送给命令的。命令执行时,内核已经将命令行参数放入命令的栈中,命令执行时则可以获取命令行参数,解析,执行。

命令行参数使命令可以执行不同任务。

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同理。

猜你喜欢

转载自blog.csdn.net/qq_41035588/article/details/80283323