浅析(命令行参数 )&(main函数参数)

  1. 前言
    1. 命令行参数:
    2. linux系统下的实现:
  2. 结语

前言

命令行参数:

● 命令行参数是控制命令执行的一种方式。

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

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

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。互动交流时请遵守宽容、换位思考的原则。

×

喜欢就点赞,疼爱就打赏

(function(){ var bp = document.createElement('script'); bp.src = '//push.zhanzhang.baidu.com/push.js'; var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();
休闲小游戏