main 函数argc , argv 主命令行参数

ARGc和ARGv中的ARG指的是"参数"(ARGuments, argument counter 和 argument vector )

至少有两个参数至主函数:ARGc和ARGv;

首先是一个至算提供的参数到程序, 第二个是对字符串数组的指针。

基本作用:

argc, argv 用命令行编译程序时有用。

主函数main中变量(int argc, char *argv[ ])的含义

有些编译器允许将main()的返回类型声明为void,这已不再是合法的C++;

main(int argc, char *argv[ ], char **env)才是UNIX和Linux中的标准写法。

>>> argc: 整数,用来统计你运行程序时送给main函数的命令行参数的个数.

>>> * argv[]: 字符串数组,用来存放指向你的字符串参数的指针数组,每一个元素指向一个参数

## argv[0] 指向程序运行的全路径名

## argv[1] 指向在DOS命令行中执行程序名后的第一个字符串

## argv[2] 指向执行程序名后的第二个字符串

...

## argv[argc]为NULL。

>>> **env:字符串数组。env[ ]的每一个元素都包含ENVVAR=value形式的字符

串。其中ENVVAR为环境变量,value 为ENVVAR的对应值。

argc, argv, env是在main( )函数之前被赋值的,编译器生成的可执行文件,main( )不是真正的入口点,而是一个标准的函数,这个函数名与具体的操作系统有关。

例:

#include <stdio.h>  //必須包含<stdio.h>頭文件

int main(int argc, char *argv[])//整数类型主函数(整数类型统计参数个数,字符类型*数组指针至字符[])
{
	printf("%d\n",argc);//格式化输出
	while(argc)//当(统计参数个数)
		printf("%s\n",argv[--argc]);//格式化输出
	return0;//返回0;正常退出
}

假设将其编译为 test.exe

在命令行下

〉test hello

得到的输出结果为

2

hello

test

main(int argc, char* argv[]),其中argc是指变量的个数,本例中即指test和hello(注意,命令test也算在内)这两个变量,argc即为2, argv是一个char *的数组,其中存放指向参数变量的指针,此处argv[0]指向test,argv[1]指向hello

再例:

#include <stdio.h>

int main(int argc, char *argv[])
{
	if(argc == 1 || argc > 2)
		printf("请输入想要编辑的文件名如:fillname");
	if(argc==2)
		printf("编辑%s\n",argv[1]);
	return0;
}

编译该程序:gcc -o edit edit.c

运行:〉edit

结果:请输入想要编辑的文件名如:fillname

运行:〉edit f1.txt

结果:编辑 f1.txt

执行edit时,argc为1,argv[0]指向edit

而执行edit f1.txt时,argc的值为2,argv[0]指向edit,argv[1]指向f1.txt

时间: 2024-12-09 07:57:58

main 函数argc , argv 主命令行参数的相关文章

getopt函数的使用——分析命令行参数

getopt(分析命令行参数) getopt(分析命令行参数) 短参数的定义 返回值 范例 getopt_long 相关函数表头文件 #include<unistd.h> 定义函数 int getopt(int argc,char * const argv[ ],const char * optstring); 函数说明 getopt()用来分析命令行参数.参数argc和argv是由main()传递的参数个数和内容.参数optstring 则代表欲处理的选项字符串.此函数会返回在argv中下一

Qt之命令行参数

简述 在Qt之进程间通信(QProcess)一节,我们讲解了如何通过QProcess来进行进程间的通信.主要通过启动外部程序,然后通过命令行的方式传递参数. 这里,我们可以通过Qt Creator来设置命令行参数Arguments,来设置需要用到的信息.也可以用来测试其它进程传参功能. 简述 设置参数 解析 更多参考 设置参数 选择:项目 -> 构建和运行 -> 运行,在Arguments输入框中输入需要传递的参数. 为了演示,我传递了一个Json对象:{\"UserName\&qu

第33课 main函数与命令行参数

1. main函数的概念 (1)C语言中main函数称之为主函数 (2)一个程序是从main函数开始执行的 [编程实验]main函数的原型究竟是什么 //以下四个main函数都是合法的 //第1种 //main() //{ //} //第2种 //void main() //{ //} //第3种:——标准的入口函数 int main() { return 0; } //第3种:——标准的入口函数 //int main() //{ // //没写返回值 //} [思考]为什么编译器支持那么多种不

命令行参数(argc, argv)

每个C语言程序都必须有一个称为main()的函数,作为程序启动的起点.当执行程序时,命令行参数(command-line argument)(由shell逐一解析)通过两个入参提供给main()函数.第一个参数int argc,表示命令行参数的个数.第二个参数char *argv[],是一个指向命令行参数的指针数组,每一参数又都是以空字符(null) 结尾的字符串.第一个字符串,亦即argv[0]指向的,(通常)是该程序的名称.argv中的指针列表以NULL指针结尾(即argv[argc]为NU

(二)NS3如何编译、运行脚本和 Command Line命令行参数设置

二.编译.运行脚本和Command Line命令行参数设置 7. 编译和运行脚本主要步骤 1) 将编写的脚本复制到ns-3.22/scratch目录下(可以在ubuntu窗口界面直接复制) 进入ns3目录: /ns-3.22 $ cp examples/tutorial/first.cc  scratch/myfirst.cc将脚本复制到scratch目录下 2) 构建(编译) $ ./waf 3) 运行 $ ./waf --run scratch/myfirst (可能会有运行权限问题,可在r

Linux 程序设计学习笔记----命令行参数处理

转载请注明出处.http://blog.csdn.net/suool/article/details/38089001 问题引入----命令行参数及解析 在使用linux时,与windows最大的不同应该就是经常使用命令行来解决大多数问题.比如下面这样的: 而显然我们知道C语言程序的入口是mian函数,即是从main函数开始执行,而main函数的原型是: int main( int argc, char *argv[] ); int main( int argc, char **argv );

用Google的gflags轻松的编码解析命令行参数

支持的参数类型 gflags支持的类型有bool,int32,int64,uint64,double和string.可以说这些基本类型大体上满足了我们的需求. DEFINE_bool: boolean DEFINE_int32: 32-bit integer DEFINE_int64: 64-bit integer DEFINE_uint64: unsigned 64-bit integer DEFINE_double: double DEFINE_string: C++ string 比如上文

Java实验课:命令行参数是什么?

命令行参数:在命令行中给定的参数就是命令行参数.(即从输入位置角度理解). 命令行的参数 1. 什么是命令行的参数? 如: java Test1 365 156 "China" (以上Test1必须为主类,否则不能运行) 2.命令行的参数由谁来接收? 一个程序开始于对函数main()的调用.在这样做的时候,有两个参数被送给main(), 其中的一个描述了命令行参数的个数,通常称为argc:另一个是命令行参数的数组,通常称为argv. 命令行参数都是字符串,所以argv的类型是char*

python中命令行参数

python中的命令行参数 python中有一个模块sys,sys.argv这个属性提供了对命令行参数的访问.命令行参数是调用某个程序时除程序名外的其他参数. sys.argv是命令行参数的列表 len(sys.argv)是命令行参数的个数 下面我们用一个简单的例子来说明一下. #!/usr/bin/python #coding:utf-8 import sys ##加载sys这个模块. for i in range(len(sys.argv)): print "第%d个参数是:%s"