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

合集下载

函数大全(m开头)

函数大全(m开头)

函数大全(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[] 的每一个元素都包含ENVV AR=value形式的字符串。

其中ENVV AR为环境变量如PA TH或87。

value 为ENVV AR的对应值如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 <stdio.h>#include <stdlib.h>main(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 butone" stop!注意: 可以用双引号括起内含空格的参数, 如本例中的: " argumentwith blanks"和"Last but one")。

main主函数的概念

main主函数的概念

在程序设计中,main函数是一个程序的入口点,它是C 和C++ 等编程语言中的一个特殊函数,用于执行程序的主要任务。

main() 函数通常是一个程序的第一个被执行的函数,它的名称是由标准库规定的,必须以main 开头,并在程序中以return 0; 语句结束。

main() 函数的参数通常为一个整数类型的argc 和一个字符串类型的argv 数组。

argc 表示命令行参数的个数,而argv 数组则包含了所有的命令行参数。

通过这些参数,程序可以获取用户输入的命令行参数,并进行相应的处理。

main() 函数通常包含了程序的主体逻辑,包括对用户输入的处理、数据的处理、输出的控制等等。

在C 和C++ 等编程语言中,main() 函数是程序的入口点,程序必须以main() 函数作为程序的开始,并在main() 函数中执行程序的主要任务。

main函数的两个参数

main函数的两个参数

main函数的两个参数Main函数是C语言中的一个重要函数,它是程序的入口点。

在C语言中,main函数有两个参数,分别是argc和argv。

argc是一个整数类型的变量,它表示命令行参数的数量。

命令行参数是指在命令行中输入程序名称后,紧跟着的一些参数,这些参数可以用来控制程序的行为。

例如,我们可以在命令行中输入“program.exe arg1 arg2 arg3”,其中arg1、arg2、arg3就是命令行参数,argc的值就是4,因为程序名称也算一个参数。

argv是一个字符指针数组,它存储了命令行参数的值。

argv[0]存储的是程序名称,argv[1]存储的是第一个命令行参数的值,argv[2]存储的是第二个命令行参数的值,以此类推。

例如,如果我们输入“program.exe arg1 arg2 arg3”,那么argv[0]的值就是“program.exe”,argv[1]的值就是“arg1”,argv[2]的值就是“arg2”,argv[3]的值就是“arg3”。

在实际编程中,我们可以利用argc和argv来实现一些功能。

例如,我们可以根据命令行参数的值来控制程序的行为,或者根据命令行参数的数量来判断程序是否被正确地调用。

下面是一个简单的示例程序:```#include <stdio.h>int main(int argc, char *argv[]){int i;printf("argc = %d\n", argc);for (i = 0; i < argc; i++){printf("argv[%d] = %s\n", i, argv[i]);}return 0;}```这个程序的功能是输出命令行参数的数量和值。

我们可以在命令行中输入“program.exe arg1 arg2 arg3”,然后运行这个程序,它会输出以下结果:```argc = 4argv[0] = program.exeargv[1] = arg1argv[2] = arg2argv[3] = arg3```从输出结果可以看出,argc的值是4,argv数组中存储了程序名称和三个命令行参数的值。

C语言之Main函数返回值问题分析

C语言之Main函数返回值问题分析

C语言之Main函数返回值问题分析C语言之Main函数返回值问题分析:很多人甚至市面上的一些书籍,都使用了void main( ) ,其实这是错误的。

C/C++ 中从来没有定义过void main( ) 。

C++ 之父 Bjarne Stroustrup 在他的主页上的 FAQ 中明确地写着 The definition void main( ) { /* ... */ } is not and never has been C++, nor has it even been C.( void main( ) 从来就不存在于 C++ 或者 C )。

下面我分别说一下 C 和C++ 标准中对 main 函数的定义。

“The C programming Language(《C 程序设计语言》)用的就是main( )。

”--- 这是因为第一版的C语言只有一种类型,那就是int,没有char,没有long,没有float,…………既然只有一种类型,那么就可以不写,后来的改进版为了兼容以前的代码于是规定:不明确标明返回值的,默认返回值为int,也就是说 main()等同于int main(),而不是等同于void main()。

在C99中,标准要求编译器至少给 main() 这种用法来个警告。

1. C在 C89 中,main( ) 是可以接受的。

Brian W. Kernighan 和Dennis M. Ritchie 的经典巨著 The C programming Language 2e(《C 程序设计语言第二版》)用的就是 main( )。

不过在最新的 C99 标准中,只有以下两种定义方式是正确的:int main( void )int main( int argc, char *argv[] )(参考资料:ISO/IEC 9899:1999 (E) Programming languages — C 5.1.2.2.1 Program startup)当然,我们也可以做一点小小的改动。

main函数的正确格式

main函数的正确格式

main函数的正确格式 main函数称之为主函数,⼀个C程序总是从main()函数开始执⾏的。

在关于C语⾔的⽹贴和图书中,可以看到main函数的多种格式,这些格式,有的是正确的,有的是不正确的,为了避免错误,现归纳整理如下。

⼀、main函数头的格式: 1.int main(int argc, char *argv[]) 推荐指数:★★★★★ 有参数的格式,这是符合C89、C99标准的写法。

第⼀个参数argc(argument count)是命令⾏中的字符串个数。

第⼆个参数argv(argument value)是⼀个指针数组,⼀般程序名赋值给argv[0],从argv[1]开始对各个参数依次赋值。

如执⾏命令:dir /a /p 则:argc=3,argv[0]=dir,argv[1]=/a,argv[2]=/pint main(int argc, char *argv[]){return0;} 2.int main(void) 推荐指数:★★★★★ ⽆参数的格式,这是符合C89、C99标准的写法。

int main(void){return0;} 3.int main() 推荐指数:★★★☆☆ ⽆参数的格式,相当于第2种写法,C89标准中允许,常⽤的编译器也⽀持这种写法,但不符合最新的 C99 标准。

int main(){return0;} 4.main() 推荐指数:★☆☆☆☆ ⽆参数的格式,相当于第3种写法,C89标准中允许,但不符合C99 标准。

第⼀版的C语⾔只有int⼀种类型,没有char,long,float等,既然只有⼀种类型,那么就可以不写,后来的改进版为了兼容以前的代码于是规定:不明确标明返回值的,默认返回值为int,也就是说main()等同于int main()。

在C99标准中,要求编译器⾄少给 main() 这种⽤法来个警告。

尽管这种写法也能通过编译,但强烈建议不要因为少敲⼏个字母⽽去这么写。

关于C语言的void main

关于C语言的void main

关于C语言的void main()作者:admin 发布时间:2012-02-13 17:41 来源:C语言中文网人围观分享到:QQ空间新浪微博人人网腾讯微博豆瓣15很多人甚至市面上的一些书籍,都使用了void main( ),其实这是错误的。

C/C++中从来没有定义过void main( )。

C++之父Bjarne Stroustrup 在他的主页上的FAQ中明确地写着The definition void main( ) { /* ... */ } is not and never has been C++, nor has it even been C.( void main( )从来就不存在于C++或者C)。

下面我分别说一下C和C++标准中对main函数的定义。

一、 C语言中的main()在C89中,main( )是可以接受的。

Brian W. Kernighan和Dennis M. Ritchie 的经典巨著The C programming Language 2e(《C 程序设计语言第二版》)用的就是main( )。

不过在最新的C99标准中,只有以下两种定义方式是正确的:int main(void)int main(int argc, char *argv[])(参考资料:ISO/IEC 9899:1999 (E) Programming languages ? C 5.1.2.2.1 Program startup)当然,我们也可以做一点小小的改动。

例如:char *argv[]可以写成char **argv;argv和argc可以改成别的变量名(如intval和charval),不过一定要符合变量的命名规则。

如果不需要从命令行中获取参数,请用int main(void);否则请用int main(int argc, char *argv[])。

main函数的返回值类型必须是int,这样返回值才能传递给程序的调用者(如操作系统)。

int main(int argc,char argv[])详解

int main(int argc,char argv[])详解

int main(int argc,char argv[])详解int main(int argc,char* argv[])详解argc是命令行总的参数个数argv[]为保存命令行参数的字符串指针,其中第0个参数是程序的全名,以后的参数为命令行后面跟的用户输入的参数,argv参数是字符串指针数组,其各元素值为命令行中各字符串(参数均按字符串处理)的首地址。

指针数组的长度即为参数个数argc。

数组元素初值由系统自动赋予。

比如:int main(int argc, char* argv[]){int i;for (i = 0; i&lt;argc; i++)cout&lt;&lt;argv[i]&lt;&lt;endl;cin&gt;&gt;i;return 0;}执行时敲入F:\MYDOCU~1\TEMPCODE\D1\DEBUG\D1.EXE aaaa bbb ccc ddd输出如下:F:\MYDOCU~1\TEMPCODE\D1\DEBUG\D1.EXEaaaabbbcccddd--------------------------------------------------------------------char *argv[]是一个字符数组,其大小是int argc,主要用于命令行参数argv[] 参数,数组里每个元素代表一个参数;比如你输入test a.c b.c t.c则argc = 4 argv[0] = "test"argv[1] = "a.c"argv[2] = "b.c"argv[3] = "t.c"--------------------------------------------------------------------------------------------argc记录了用户在运行程序的命令行中输入的参数的个数。

main函数默认参数argc和argv的详解

main函数默认参数argc和argv的详解

main函数默认参数argc和argv的详解
int main(int argc, char** argv)
{
int n = 0 , i;
for(i = 1 ; i < argc ; i++)
n = n * 10 + *argv[i]-'0';
printf("%d\n",n);
return 0;
}
若运⾏时输⼊以下命令⾏ tt 12 345 678,则程序运⾏的输出结果是:136
主函数的第⼀个参数argc为整型参数,记下从命令⾏输⼊参数的个数;
第⼆个参数argv是⼀个字符型的指针数组,它的每⼀个元素分别指向命令⾏输⼊的各字符串。

在本例中argc的值为4,argv[0]指向字符串“tt”,argv[1]指向字符串“12”,argv[2]指向字符串“345”, argv[3]指向字符串“678”。

程序中,通过⼀个for循环,遍历了后⾯的三个参数字符串,每次将n⾃乘10,然后累加argv[i]-‘0’,即第i个参数字符串的⾸字符减去‘0’。

⼀个数字字符减去‘0’字符,即可得到这个数字字符的实际数值,因此三次循环的结果是让n的为136。

c语言中main函数用法及知识点总结

c语言中main函数用法及知识点总结

c语⾔中main函数⽤法及知识点总结1、main函数是C程序的⼊⼝函数,即程序的执⾏从main函数开始,其他函数的调动也直接或间接地在main函数中调⽤。

2、main函数的返回值⽤于解释程序的退出状态。

若返回0,则表⽰程序正常退出。

返回其他数字的含义由系统决定。

通常返回⾮零代表程序异常退出。

实例#include <stdio.h>#include <string.h>int main(int argc, char **argv) {int i = 0;printf("The program name is %s\n", argv[0]);printf("The command line has %d argument: \n", argvc - 1);for (i = 1; i < argc; i++) {printf("%s ", argv[i]);}return 0;}知识点扩充:每⼀C程序都必须有⼀main()函数,可以根据⾃⼰的爱好把它放在程序的某个地⽅。

有些程序员把它放在最前⾯,⽽另⼀些程序员把它放在最后⾯,⽆论放在哪个地⽅,以下⼏点说明都是适合的。

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

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

* argv:字符串数组。

char* argv[],我们可以看出,argv的类型是char* [],即是⼀个指向字符数组的指针,所以我们还可以写作:char** argv。

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

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

「C语言」intmain还是voidmain?

「C语言」intmain还是voidmain?

「C语⾔」intmain还是voidmain?从⼤⼀⼊学刚接触C到现在已满7个⽉了,虽然刚开始就知道```int main```才是标准的写法,但⼀直没有深刻理解为什么不能⽤```void main```⽽必须使⽤```int main```。

刚好最近有⾮计算机相关专业学C的同学问我```int main```、```main```和```void``` ```main```有什么区别,便觉得是时候好好整理⼀番了,于是有了此博客。

先简⽽⾔之1.void 和 int 表明声明不同的主函数返回值,不声明则默认返回值为int整型。

2.int main可移植性强。

3.C语⾔从来没声明过```void main```,只声明过```main()```。

3.抛弃⼀切⽤```void main```编写C程序的习惯!稍微深⼊main函数,⼜称主函数,作为绝⼤⼤部分C程序唯⼀的⼊⼝(⽐如windows编程中可以编写⼀个其他windows程序都可以使⽤的动态链接库(dll)模块,由于DLL模块不是独⽴的程序,因此不需要main函数。

再⽐如,⽤于专业环境的程序-----如机器⼈中的控制芯⽚--可能不需要main函数),是要求有返回值的,该返回值返回给操作系统来表明改程序的执⾏状况。

返回0代表程序正常执⾏成功,返回⾮0值代表程序异常结束,因此返回值需要是int整型,于是有了```int main()```的规范。

如果使⽤```void main```,既声明主函数没有返回值的话,程序随能编译、运⾏成功,却不利于操作系统判断其状态,这对于由很多C程序构成的⼤型项⽬来说是可能会是致命的。

尤其从c99标准(1999年制定的官⽅C语⾔标准第⼆版)开始必须使⽤```int main```,如果没加```return 0;```语句C99要求编译器⾃动添加(⾃⼰写上是个好习惯)。

只声明```main```的话系统默认为```int main```。

博图main主函数input

博图main主函数input

博图main主函数input
Main()主函数:
在C/C+ 里面关于主函数main函数的定义时,大多时候我们采用的是int main(void)这种形式,不用带参数;但是标准的定义一般有两种格式:
int main(int argc,char *argv[]);
int main(int argc,char **argv);
参数说明:
argc表示传送主函数参数的个数;
argv[]:指向字符串的指针数组,其中argv[0]是命令本身,也就是程序本身,每个参数用空格隔开;
关于指针数组:表示该数组的所有元素都是指针。

input()函数:
在Python3中,input()函数接受一个标准输入数据,返回为string类型。

注意:在Python3中,raw_input()和input()进行了整合,去除了raw_input(),仅保留了input()函数,其接收任意任性输入。

将所有输入默认为字符串处理,并返回字符串类型。

C++中main函数的返回值一定要是int

C++中main函数的返回值一定要是int

C++中main函数的返回值⼀定要是int因为⼤学上课时候,经常是在主函数中做处理,直接⽤cout语句输出到显⽰设备,所以⼀直在⽤void main().直到后⾯具体编程的时候,才发现void main()这种⽤法是按 C89(C语⾔的早期标准)规定的,main() 是可以接受void返回值的。

Brian W. Kernighan 和 Dennis M. Ritchie 的经典巨著 The C programming Language(《C 程序设计语⾔》)⽤的就是void main( )。

不过在最新的C99 标准中,只有以下两种定义⽅式是正确的:int main( void )int main( int argc, char *argv[] )当然,我们也可以做⼀点⼩⼩的改动。

例如:char *argv[] 可以写成 char **argv;argv 和 argc 可以改成别的变量名(如 intval 和charval),不过⼀定要符合变量的命名规则。

C99和C++98规定编译器要⾃动在⽣成的⽬标⽂件中加⼊”return 0;”, 表⽰程序正常退出.写程序好的习惯是⾃⼰在main函数的最后加上return 语句,因为并不是所有的编译器都⽀持这⼀特性. 所以如果想让⾃⼰的程序写出来移植性好,最好加上return语句。

2、那么再来说说带参数的main函数,这两个参数是⼲嘛⽤的如果不⽤命令⾏获取参数的话,就不⽤这种格式了。

关于main(int argc, char *argv[])argc和argv是main函数的形式参数。

这两个形式参数的类型是系统规定的。

如果main函数要带参数,就是这两个类型的参数;否则main函数就没有参数。

变量名称argc和argv是常规的名称,当然也可以换成其他名称。

那么,实际参数是如何传递给main函数的argc和argv的呢?我们知道,C程序在编译和链接后,都⽣成⼀个exe⽂件,执⾏该exe⽂件时,可以直接执⾏;也可以在命令⾏下带参数执⾏,命令⾏执⾏的形式为:可执⾏⽂件名称参数1 参数2 ... ... 参数n。

void_main与int_main之间的区别是什么?

void_main与int_main之间的区别是什么?

其实第二种形式的两个参数argc,argv的名称是可以改变的,但保持原样是更明智的选择。
main()函数的返回类型必须为int;返回的整形值作为传递给调用者的一个返回码。(this allows a return code to be passed to the invoker)
对于C++:
以下是可以接受的格式:
int main ( int argc, char *argv[] )
int main ()
第一种格式遵从C99标准;
第二种格式在不需要通过命令行向程序传递参数时使用,与C99标准中规定的格式int main(void)效果相同。
但是int main(int argc, char *argv[], char *envp[])又是怎么回事呢?
好比是标准的扩展版,main()函数可以在一些系统中提取一个额外的参数用来访问环境变量。这个用法不能保证在每个编译环境中都行得通,所以使用 envp 这个参数是还是谨慎为妙。
void main与int main之间的区别是什么?
这是一个常见的问题。我们来探讨一下这个问题,并深入研究一些有关main()函数不同版本的更多的东西。
C与C++在main()函数方面的标准有所不同,所以我们要分开讨论。
对于C语言:
在C89标准中,main() 的形式是可以接受的,当然使用如下的C99标准更明智,因为在这个标准中只有如下格式才能被接受:
(C)int main()与int main(void)之间的区别:
很多C程序员都曾搞错的一个概念,就是以为这样一个函数不接受任何参数:
int main();事实上,这个函数被认为可以接受未知个数的参数(译:可接受任意多的参数!)。正确的用法是在括号内添加关键字void。

main函数的的两个参数

main函数的的两个参数

main函数的的两个参数C语⾔中main函数的参数有两个,这两个参数写为argc和argv.因此,main函数的函数头可写为:main(argc,argv);C语⾔还规定argc(第⼀个形参)必须是整型变量,argv( 第⼆个形参)必须是指向字符串的指针数组。

加上形参说明后,main函数的函数头应写为: int main (int argc,char *argv[]) 或者 int main (int argc,char **argv) 其中第⼀个表⽰参数的个数;第⼆个参数中argv[0]为⾃⾝运⾏⽬录路径和程序名,argv[1]指向第⼀个参数、argv[2]指向第⼆个参数……/*****************************************funcition name:main.c*****************************************/#include <stdio.h>#include <string.h>int main(int argc,char *argv[]){printf("argc= %d\n",argc);while(argc--){printf("%s \n",*argv++);}return0;}/*complie function*/:$ gcc main.c -o main/*running function*/****************************************************./main结果:argc = 1./main /*argc是统计有多少个参数,其中⾃⾝的路径永远是第⼀个参数*/****************************************************./main para1 para2结果:argc = 3./main /*argv[0]为⾃⾝运⾏⽬录路径和程序名*/para1 /*argv[1]指向第⼀个参数*/para2 /*argv[2]指向第⼆个参数*/。

void main()

void main()

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。

  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[][]
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。

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

* argv: 字符串数组。

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

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

*env: 安符串数组。

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

其中ENVV AR为环境变量如PA TH或87。

value 为ENVV AR的对应值如C:\DOS, C: \TURBOC(对于PA TH) 或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
#include
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]);
}
如果在DOS 提示符下, 按以下方式运行EXAMPLE.EXE:
C:\example first_argument "argument with blanks" 3 4 "last but one" stop!
注意: 可以用双引号括起内含空格的参数, 如本例中的: " argument with blanks"和"Last but one")。

结果是这样的:
The value of argc is 7
These are the 7 command-linearguments passed to main:
argv[0]:C:\TURBO\EXAMPLE.EXE
argv[1]:first_argument
argv[2]:argument with blanks
argv[3]:3
argv[4]:4
argv[5]:last but one
argv[6]:stop!
_______________________________________________________
命令行界面的程序,通常都需要输入命令行参数帮助程序执行。

假定有一个可执行程序名为test。

那么运行该程序的的命令行如下:
test
带命令行参数是同一行中的附加项:
test –c TEST
其中–c 和TEST就是命令行参数。

C程序可以将这些附加参数读出来,并为自己所用,比如作为程序运行的条件(经常看到调试参数–D 就是这么一个)。

C程序通过使用main()的参数来读取这些附加参数,下面的repeat.c给出一个读出main参数的例子:
repeat.c:
#include
#include
int main(int argc, char *argv[])
{
int count;
printf("The command line has %d arguments:\n", argc - 1);
for(count = 1; count < argc; count++)
{
printf("%d: %s\n", count, argv[count]);
}
printf("\n");
//system("PAUSE");
return 0;
}
这里先解释一下main(int argc, char*argv[])这个函数中两个参数的意义,argc记录的是命令行中输入参数的数目,argv是一个拥有argc个元素的字符串数组,每个元素保存一个命令行中输入的参数。

编译这个文件为可执行文件repeat:
gcc repeat.c -o repeat
按下列方式执行repeat 程序
./repeat I "love you" 3
输出如下:
The command line has 3 arguments:
1: I
2: love you
3: 3
在这个例子中,argc的值为4,命令行一共输入了四个参数“./repeat”、“I”、“love you”、“3”。

在DOS和UNIX环境下,命令行参数中用””符号表示其是一个字符串,视为一个参数。

相关文档
最新文档