欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

int main( int argc, char* argv[])参数解析

程序员文章站 2022-07-15 09:22:44
...

在一些c语言的树种,经常看到有int main( int argc, char* argv[])这种写法,而在 C Premier Plus中,对这两个参数的意义和描述非常少,在 linux 系统命令行中却经常看到。通过查阅一些资料,基本上了解了这些参数的作用。

一、argc、argv的具体含义 
        argc和argv参数在用命令行编译程序时有用。main( int argc, char* argv[], char **env ) 中 
        第一个参数,int型的argc,为整型,用来统计程序运行时发送给main函数的命令行参数的个数,在VS中默认值为1。 
        第二个参数,char*型的argv[],为字符串数组,用来存放指向的字符串参数的指针数组,每一个元素指向一个参数。各成员含义如下: 
        argv[0] 指向程序运行的全路径名 
        argv[1] 指向在DOS命令行中执行程序名后的第一个字符串 
        argv[2] 指向执行程序名后的第二个字符串 
        argv[3] 指向执行程序名后的第三个字符串 
        argv[argc] 为NULL 
        第三个参数,char**型的env,为字符串数组。env[]的每一个元素都包含ENVVAR=value形式的字符串,其中ENVVAR为环境变量,value为其对应的值。平时使用到的比较少。

二、使用visual studio 进行测试

测试代码主要功能是获取输入参数个数,并打印:

#include <stdio.h>

int main(int argc, char* argv[])
{
	int i;

	printf("input %d arguments\n", argc);

	for (i = 0; i <= argc; i++)
	{
		printf("argument %d = %s\n", i, argv[i]);
	}

	(void)getchar();

	return 0;
}

三、windows 命令行测试

编译上述程序后,debug中的文件列表如下:

int main( int argc, char* argv[])参数解析

然后,使用命令行运行程序,并输入一些参数,观察程序输出结果:

int main( int argc, char* argv[])参数解析

可以看到,我们测试时输入了 5 个参数,即:  .\file_Test.exe   aa   bb   cc   dd ,分别为可执行文件路径和 4 个参数。

输出结果中,显示输入了 5 个参数;

数组[0] 存储 exe 路径;

数组[1] 存储输入参数1;

数组[2] 存储输入参数2;

数组[3] 存储输入参数3;

数组[4] 存储输入参数4;

数组[5] 存储 NULL;