关于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。

  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环境下,命令行参数中用””符号表示其是一个字符串,视为一个参数。

相关文档
最新文档