c语言中命令行参数argc,argv

合集下载

C语言函数大全(m开头)

C语言函数大全(m开头)

C语言函数大全(m开头)main()主函数每一C 程序都必须有一 main() 函数, 可以根据自己的爱好把它放在程序的某个地方。

有些程序员把它放在最前面, 而另一些程序员把它放在最后面, 无论放在哪个地方, 以下几点说明都是适合的。

1. main() 参数在Turbo C2.0启动过程中, 传递main()函数三个参数: argc, argv和env。

* argc: 整数, 为传给main()的命令行参数个数。

* argv: 字符串数组。

在DOS 3.X 版本中, argv[0] 为程序运行的全路径名; 对DOS 3.0以下的版本, argv[0]为空串("") 。

argv[1] 为在DOS命令行中执行程序名后的第一个字符串;argv[2] 为执行程序名后的第二个字符串;...argv[argc]为NULL。

*env: 安符串数组。

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

其中ENVVAR为环境变量如PATH或87。

value 为ENVVAR的对应值如C:\DOS, C: \TURBOC(对于PATH) 或YES(对于87)。

Turbo C2.0启动时总是把这三个参数传递给main()函数, 可以在用户程序中说明(或不说明)它们, 如果说明了部分(或全部)参数, 它们就成为main()子程序的局部变量。

请注意: 一旦想说明这些参数, 则必须按argc, argv, env 的顺序, 如以下的例子:main()main(int argc)main(int argc, char *argv[])main(int argc, char *argv[], char *env[])其中第二种情况是合法的, 但不常见, 因为在程序中很少有只用argc, 而不用argv[]的情况。

以下提供一样例程序EXAMPLE.EXE, 演示如何在main()函数中使用三个参数: /*program name EXAMPLE.EXE*/#include#includemain(int argc, char *argv[], char *env[]){int i;printf("These are the %d command- line arguments passed tomain:\n\n", argc);for(i=0; i<=argc; i++)printf("argv[%d]:%s\n", i, argv[i]);printf("\nThe environment string(s)on this system are:\n\n");for(i=0; env[i]!=NULL; i++)printf(" env[%d]:%s\n", i, env[i]);}如果在DOS 提示符下, 按以下方式运行EXAMPLE.EXE:C:\example first_argument "argument with blanks" 3 4 "last but one" stop!注意: 可以用双引号括起内含空格的参数, 如本例中的: " argumentwith blanks"和"Last but one")。

关于main函数的(int argc,char argv[])

关于main函数的(int argc,char argv[])

main(int argc,char *argv[ ])argv为指针的指针argc为整数char **argv or: char *argv[] or: char argv[][]main()括号内是固定的写法。

下面给出一个例子来理解这两个参数的用法:假设程序的名称为prog,当只输入prog,则由操作系统传来的参数为:argc=1,表示只有一程序名称。

argc只有一个元素,argv[0]指向输入的程序路径及名称:./prog当输入prog para_1,有一个参数,则由操作系统传来的参数为:argc=2,表示除了程序名外还有一个参数。

argv[0]指向输入的程序路径及名称。

argv[1]指向参数para_1字符串。

当输入prog para_1 para_2 有2个参数,则由操作系统传来的参数为:argc=3,表示除了程序名外还有2个参数。

argv[0]指向输入的程序路径及名称。

argv[1]指向参数para_1字符串。

argv[2]指向参数para_2字符串。

void main( int argc, char *argv[] )char *argv[] : argv 是一个指针数组,他的元素个数是argc,存放的是指向每一个参数的指针,他的第一个元素即argv[0]为编译生成的可执行文件名(包括路径eg:"F:\VC\Ex1\Debug\Ex1.exe"),从二个元素(argv[1])开始,是每一个参数int argc 表示argv的大小,是实际参数个数+1,其中+1是因为argv[0]是编译后的可执行文件名main()主函数每一C 程序都必须有一main()函数, 可以根据自己的爱好把它放在程序的某个地方。

有些程序员把它放在最前面, 而另一些程序员把它放在最后面, 无论放在哪个地方, 以下几点说明都是适合的。

1. main() 参数在Turbo C2.0启动过程中, 传递main()函数三个参数: argc, argv和env。

c语言getopt详解

c语言getopt详解

c语言getopt详解以C语言getopt详解为标题在C语言的编程中,经常需要处理命令行参数。

而在处理命令行参数的过程中,getopt函数是一个非常常用的函数。

本文将详细介绍C语言中的getopt函数的使用方法和注意事项。

一、getopt函数的定义和作用getopt函数是C语言中的一个标准库函数,其原型定义如下:```cint getopt(int argc, char * const argv[], const char *optstring); ```该函数用于解析命令行参数。

它接受三个参数:argc表示命令行参数的个数,argv是一个指向命令行参数的指针数组,optstring是一个字符串,用于指定可接受的选项和选项参数。

getopt函数返回一个整数,用于表示当前解析到的选项。

如果解析完所有选项,函数将返回-1。

二、getopt函数的使用方法使用getopt函数需要注意以下几点:1.在调用getopt函数之前,需要定义一个变量来保存当前解析到的选项。

通常将这个变量命名为opt,并初始化为0。

2.在命令行参数中,选项通常以"-"或"--"开头。

单个字符的选项可以连写,例如"-abc"等价于"-a -b -c"。

3.对于带有参数的选项,可以在选项后面紧跟参数,也可以使用空格或等号将选项和参数分隔开。

4.getopt函数会依次解析命令行参数中的选项,并返回当前解析到的选项。

如果选项需要参数,则使用全局变量optarg来保存参数的值。

下面是一个示例代码,演示了如何使用getopt函数解析命令行参数:```c#include <stdio.h>#include <unistd.h>int main(int argc, char *argv[]) {int opt;while ((opt = getopt(argc, argv, "a:b:c")) != -1) {switch (opt) {case 'a':printf("Option -a with value %s\n", optarg);break;case 'b':printf("Option -b with value %s\n", optarg);break;case 'c':printf("Option -c\n");break;default:printf("Unknown option\n");break;}}return 0;}```在上述示例代码中,opt的取值为'a'、'b'或'c',分别对应不同的选项。

c语言 命令行参数转整数

c语言 命令行参数转整数

c语言命令行参数转整数
在C语言中,可以使用`atoi`函数将命令行参数(*argv())转换为整数。

以下是一个示例代码:
```c
#include <iostream>
#include <sstream>
#include <string>
#include <cstdlib>
#include <conio.h>
using namespace std;
int main(int argc, char *argv[]) {
int x = 0;
for (x = 0; x < argc; x++) {
int y = atoi(argv[x]);
cout << y << endl;
}
return 0;
}
```
在这个示例中,我们使用一个循环遍历命令行参数的数组,并使用`atoi`函数将每个参数转换为整数。

然后,我们将整数打印到控制台。

如果`atoi`函数无法将参数解析为整数,它将返回 0。

因此,在循环中,你可以检查参数是否转换成功,并根据需要进行适当的处理。

希望这个示例能帮助你将命令行参数转换为整数。

如有任何进一步的问题,请随时提问。

c语言中main的含义

c语言中main的含义

C语言中main的含义简介在C语言中,`m ai n`是一个特殊的函数,是程序执行的起点和入口。

本文将深入探讨`mai n`函数的含义,以及它在C语言程序中的作用。

`main`函数的定义与声明在C语言中,`m ai n`函数的定义和声明如下所示:i n tm ai n(vo id){//执行程序的代码r e tu rn0;}`main`函数的参数无参数形式`m ai n`函数的无参数形式声明如下:i n tm ai n(vo id)这表示`ma in`函数不接收任何参数。

带参数形式`m ai n`函数的带参数形式声明如下:i n tm ai n(in ta rg c,c h ar*a rg v[])其中,`ar gc`表示命令行参数的个数,`a rg v`是一个指向字符串数组的指针,每个字符串表示一个命令行参数。

程序入口与起点在执行C语言程序时,操作系统会首先调用`ma in`函数作为程序的入口和起点。

`ma in`函数是程序与操作系统之间的桥梁,通过`ma in`函数,程序开始执行并产生相应的结果。

`main`函数的返回值`m ai n`函数的返回值是一个整数,表示程序的终止状态。

根据惯例,返回值为0表示程序正常终止,而非零值则表示程序异常终止,可以用于表达程序的执行结果。

`main`函数的执行过程`m ai n`函数的执行过程可以分为三个阶段:初始化阶段、执行阶段和清理阶段。

初始化阶段在初始化阶段,操作系统会完成一些必要的准备工作,例如为程序分配内存空间、加载库函数等。

执行阶段在执行阶段,程序会按照`m ai n`函数中编写的代码逐行执行,实现程序的功能和逻辑。

清理阶段在执行阶段结束后,操作系统会清理程序运行所占据的内存空间,释放系统资源。

`main`函数的常见用法执行简单程序`m ai n`函数可以用于执行简单的程序,例如打印"H el lo,W o rl d!"等。

#i nc lu de<s td io.h>i n tm ai n(vo id){p r in tf("He ll o,Wor l d!\n");r e tu rn0;}处理命令行参数通过带参数形式的`m a in`函数,我们可以处理命令行参数,实现程序的灵活性和可配置性。

C++控制台程序的命令行参数输入-且支持参数opts扩展

C++控制台程序的命令行参数输入-且支持参数opts扩展

C++控制台程序的命令⾏参数输⼊-且⽀持参数opts扩展C++控制台程序的命令⾏参数输⼊1. C/C++语⾔中的main函数,经常带有参数argc,argv,如下:int main(int argc, char** argv)int main(int argc, char* argv[]) argc(第⼀个形参)必须是整型变量,标识该控制台命令调⽤中接收到的参数个数,注意,包括该命令程序名字itself。

argv( 第⼆个形参)必须是指向字符串的指针数组,⽤于保存argc个参数的具体数据。

注意数组起始索引为0开始,到argc-1结束。

即:argv[0]为命令⾏中可执⾏程序名本⾝,argv[1]为命令⾏中第⼆个参数的内容,依次类推。

加上形参说明后,因此C程序中的main函数的函数头应写为:main (int argc,char *argv[])2. 控制台程序参数获取 由于main函数不能被其它函数调⽤,因此不可能在程序内部取得实际值。

那么,在何处把实参值赋予main函数的形参呢? 实际上,main函数的参数值是从命令⾏上获得的。

如何在操作系统命令⾏获取参数呢?(1)在VS中设置时右键项⽬->属性->调试->命令参数,在命令参数中添加所需参数,字符串之间⽤空格分开即可。

如果是.txt⽂件,要放在当前⽬录下(.cpp所在⽬录)【实质为exe⽣成⽬录位置】,不然找不到。

(2)或者:假如你的程序是hello.exe,如果在命令⾏运⾏该程序,(⾸先应该在命令⾏下⽤ cd 命令进⼊到 hello.exe ⽂件所在⽬录)运⾏命令为:hello.exe data.txt //.txt也在.exe所在⽬录下 注意:调⽤控制台程序命令⾏中输⼊的参数在位置上,并没有与控制台程序main函数中的两个形参⼀⼀对应的。

因为,main的形参只有⼆个,⽽命令⾏中的参数个数原则上未加限制。

argc参数表⽰了命令⾏中参数的个数(注意:⽂件名本⾝也算⼀个参数),argc的值是在输⼊命令⾏时由系统按实际参数的个数⾃动赋予的,即,argv[0]为命令⾏中可执⾏程序名本⾝,argv[1]为命令⾏中第⼆个参数的内容,依次类推。

C语言main函数的使用方法

C语言main函数的使用方法

C语言main函数的使用方法C语言main函数里的参数使用方法在学C语言的时候,我们也许常常见到int main(int argc,char* argv[])的写法,但是不知道这个argc和argv[]是干什么的,书上也没有讲到。

接下来我们来学习一下这两个参数的使用。

main()函数是C语言控制台应用程序的入口函数,就是程序启动时运行的第一个函数,既然是函数,就可以带参数,也可以不带。

我们学C语言的时候,书上的例子都是不带参数的main函数,有关参数的输入都是在程序启动后,用其他函数来执行的。

比如求两个数的最大值,一般的写法是:int max(int a,int b){if(a>=b)return a;else return b;}int main(){int a,b;scanf("%d%d",&a,&b);printf("the max num is:%d",max(a,b));return 0;}这样在程序启动之后,再输入两个数,然后输出最大值。

然而控制台应用程序以前都是在CMD或DOS命令行下进行调用的,在调用这个程序的时候,人们想直接在程序名后面跟上要输入的参数,这样程序一运行就能输出结果,而不需要在程序启动后再输入各参数,所以需要用到带参数的main函数。

main函数里的形参是固定的格式,系统给我们规定好了,就是main(int argc,char* agrv[])两个形参,argc这个形参是用来记录程序启动时就传入的实参个数,argv[]这个形参是字符指针数组,用来记录每个实参的地址的。

例如:(程序名称为test.exe)在VC++6.0或VS里运行一下,结果如下:因为它是直接就运行了,没有在程序名后跟上参数,所以argc为1,就是程序本身的名称(包含路径)。

argv[0]就指向程序名这个字符串。

在CMD命令行里先cd到该程序所在的目录,然后调用它,在程序名后跟上几个参数,然后回车。

main函数传参

main函数传参

main函数传参 在有些C语⾔程序中,我们会看到main函数有如下的写法:int main(int argc, char* argv[]); 或者是这样的:int main(int argc, char** argv); 给main传参通过argc和argv这两个参数来实现。

执⾏程序时,可以从命令⾏传值给 C 程序。

这些值被称为命令⾏参数,它们对程序很重要,特别是当您想从外部控制程序,⽽不是在代码内对这些值进⾏硬编码时,就显得尤为重要了。

命令⾏参数是使⽤ main() 函数参数来处理的,其中,argc 是指传⼊参数的个数,argv[ ] 是⼀个字符指针数组,指向传递给程序的每个参数。

下⾯是⼀个通过指定命令⾏参数实现简单计算器的程序#include <string.h>#include <stdio.h>#include <stdlib.h>int Add(int, int);int Sub(int, int);int Mul(int, int);int Div(int, int);int main(int argc, char* argv[]){if(argc != 4){printf("Parameters should be 4.\n");return -1;}int param1 = atoi(argv[1]);int param3 = atoi(argv[3]);if(!strcmp(argv[2], "+")){printf("%s %s %s = %d\n", argv[1], argv[2], argv[3], Add(param1, param3));}else if(!strcmp(argv[2], "-")){printf("%s %s %s = %d\n", argv[1], argv[2], argv[3], Sub(param1, param3));}else if(!strcmp(argv[2], "x")){printf("%s %s %s = %d\n", argv[1], argv[2], argv[3], Mul(param1, param3));}else if(!strcmp(argv[2], "/")){printf("%s %s %s = %d\n", argv[1], argv[2], argv[3], Div(param1, param3));}else{printf("Parameters fault."); return -1;}return0;}int Add(int a, int b){return a + b;}int Sub(int a, int b){return a - b;}int Mul(int a, int b){return a * b;}int Div(int a, int b){return a / b;} 其中C 库函数 int atoi(const char *str) 把参数 str 所指向的字符串转换为⼀个整数(类型为 int 型)。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

main( int argc, char ** argv )
argv:指针的指针
argc:整数
char **argv or char *argv[] or char argv[][]
为了能形象的说明这两个参数的含义,我们先用一个实例来进行讲解:
假设程序的名称为test,当只输入test,则由操作系统传来的参数为:
argc = 1,表示只有一程序名称;
argc只有一个元素,argv[0]指向输入的程序路径及名称:./ test
当输入test para_1,有一个参数,则由操作系统传来的参数为:
argc = 2,表示除了程序名外还有一个参数;
argv[0]指向输入的程序路径及名称;
argv[1]指向参数para_1字符串
当输入test para_1 para_2 有2个参数,则由操作系统传来的参数为:
argc = 3,表示除了程序名外还有两个参数;
argv[0]指向输入的程序路径及名称;
argv[1]指向参数para_1字符串;
argv[2]指向参数para_2字符串;
以此类推………………
void main( int argc, char *argv[] )
char *argv[]: argv是一个指针数组,元素个数是argc,存放的是指向每一个参数
的指针,第一个元素即argv[0]为程序运行的全路径名,从二个元素(argv[1])开始,是每一个参数的名称,最后一个元素为NULL。

总的来说,即:
* argv: 字符串数组
argv[0] 为程序运行的全路径名
argv[1] 为执行程序名后的第一个字符串;
argv[2] 为执行程序名后的第二个字符串;
...
argv[argc]为NULL。

int argc:表示argv的大小,是实际参数个数+1,其中+1是因为argv[0]是编译后的可执行文件名
main() 参数:
Turbo C2.0启动时总是把argc、argv、env(存放环境变量)这三个参数传递给main()函数, 可以在用户程序中说明(或不说明)它们, 如果说明了部分(或全部)参数, 它们就成为main()子程序的局部变量。

请注意: 一旦想说明这些参数, 则必须按argc, argv, env 的顺序, 如以下的例子:
main()
main(int argc)
main(int argc, char *argv[])
main(int argc, char *argv[], char *env[])
其中第二种情况是合法的, 但不常见, 因为在程序中很少有只用argc, 而不
用argv[]的情况。

以下提供一样例程序EXAMPLE.EXE, 演示如何在main()函数中使用三个参数:
/*program name EXAMPLE.EXE*/
#i nclude <stdio.h>
#i nclude <stdlib.h>
main(int argc, char *argv[], char *env[])
{
int i;
printf( "These are the %d command- line arguments passed to
main:\n\n", argc);
for( i = 0; i <= argc; i++)
printf( "argv[%d]:%s\n", i, argv[i] );
printf( "\nThe environment string(s)on this system are:\n\n");
for( i = 0; env[i] != NULL; i++ )
printf( " env[%d]:%s\n", i, env[i] );
}
./EXAMPLE first "I’m a good boy" c "last " stop
注意: 可以用双引号括起内含空格的参数, 如本例中的: " argument with blanks"和"Last but one")。

结果是这样的:
These are the 6 command-linearguments passed to main:
argv[0]:./ EXAMPLE
argv[1]:first
argv[2]: I’m a good boy
argv[3]:c
argv[4]: last
argv[5]:stop
argv[6]:(NULL)。

相关文档
最新文档