-
2018-05-22 20:58:26
int main(int argc, char* argv[], char**env)
int argc,程序名称;
char* argv[],指向输入的程序路径及名称;
char**env, 为环境变量.
#define _CRT_SECURE_NO_WARNINGS //vs2013 #include <stdlib.h> #include <string.h> #include <stdio.h> int main(int argc, char* argv[], char**env) { int i = 0; printf("******************* Begin argv *******************\n"); printf("argc: %d\n",argc); //程序名称; =1 只有一个 for (i = 0; i < argc; i++) { printf("%s\n", argv[i]); //指向输入的程序路径及名称 } printf("******************* End argv *******************\n"); printf("\n"); printf("\n"); printf("******************* Begin env *******************\n"); for (i = 0; env[i] != NULL; i++) { printf("%s\n", env[i]); //为环境变量 } printf("******************* End env*******************\n"); printf("\n"); system("pause"); return 0; }
更多相关内容 -
C语言main函数参数详解
2020-12-10 16:27:29main函数参数 一共有三个: 1.int argc 整型变量 2.char *argv[] 字符指针的数组,通俗一点就是字符串数组,每个元素都是字符串 3.char *envp[] 字符串数组 这三个东西再怎么神秘,也只是函数参数,只不过是main函数...main函数参数
一共有三个:
1.int argc 整型变量
2.char *argv[] 字符指针的数组,通俗一点就是字符串数组,每个元素都是字符串
3.char *envp[] 字符串数组
这三个东西再怎么神秘,也只是函数参数,只不过是main函数的参数罢了!一、int argc参数
用于存放命令行参数的个数
二、char *argv[]参数
每个元素都是一个字符串,表示命令行中的每一个参数。
关于int argc和char *argv[]参数,我用以下代码说明:
#include <stdio.h> int main(int argc,char *argv[],char *envp[]) { int i = 0; printf("参数个数为:%d\n",argc); for (i = 0; i < argc; i++) { printf("%s\n", argv[i]); } system("pause"); return 0; }
编译运行的结果:
参数只有一个,就是当前的exe文件
上文提及,既然这两个参数和命令行有关,那么我们用命令行运行一下:
运行时顺便加上3个参数:zhangsan、lisi、wangwu,再加上原来的exe文件参数,这样总共就有4个参数。
三、char *envp[]参数
这是一个存放环境变量的数组。
运行以下代码:#include <stdio.h> int main(int argc, char *argv[], char *envp[]) { int i = 0; while (envp[i] != NULL) { printf("%s\n", envp[i]); i++; } system("pause"); return 0; }
部分结果:
大家如果学习过别的语言,可能会涉及配置环境变量。如何找到环境变量的位置呢?
对于win10系统:右击“此电脑”找到属性->再找到高级系统设置->环境变量
将运行结果和找到的环境变量对比一下,就会得到验证,这个参数确实是存放环境变量的数组。通常这三个参数在编程时不会使用,所以可以去掉。这样main函数就成了无参函数。
-
main函数参数规范
2020-12-03 13:45:26main函数参数规范 给main函数传递参数,非常容易,而且每个人都有自己的编写方式; 这里介绍一下标准C库的getopt规范,该规范定义了两类参数:短参数和长参数 #include <unistd.h> #include <getopt.h> ...main函数参数规范
给main函数传递参数,非常容易,而且每个人都有自己的编写方式;
这里介绍一下标准C库的getopt规范,该规范定义了两类参数:短参数和长参数#include <unistd.h> #include <getopt.h> /*帮助*/ static void usage(FILE *fp, int argc, char *argv[]) { fprintf(fp, "Usage: %s[optionts]\n" "Options:\n" "-d | --device name Video device name[/dev/video]\n" "-h | --help Print this message\n" "", argv[0]); } /*短参数*/ static const char short_options[] = "d:h"; /*长参数*/ static const struct option long_options[] = { {"device", required_argument, NULL, 'd'}, {"help", no_argument, NULL, 'h'}, {0,0,0,0}, }; int main(int argc, char *argv[]) { for(;;) { int index; int c; c = getopt_long(argc, argv, short_options, long_options, &index); if(-1==c) break; switch(c) { case 0: break; case 'd': vd->dev_name = optarg; break; case 'h': usage(stdout, argc, argv); break; default: usage(stderr, argc, argv); return -1; } }
短参数
static const char short_options[] = "d:h";
d:
表示d这个标志后面会跟一个具体参数值;
h
表示h这个标志后面没有具体参数值;长参数
static const struct option long_options[] = {` {"device", required_argument, NULL, 'd'}, {"help", no_argument, NULL, 'h'}, {0,0,0,0}, };
device, required_argument表示有一个具体参数值;
help, no_argument表示没有具体参数值;引用
int getopt_long(int argc, char * const argv[], const char *optstring, const struct option *longopts, int *longindex);
argc和argv是main函数的参数,直接传入;
optstring,短参数格式定义;
longopts,长参数格式定义;
longindex,参数位置全局变量optarg,如果某个标志有具体的值,那么参数可以通过optarg直接获得。
深入探讨
请直接在linux命令行中man getopt
#include <unistd.h> int getopt(int argc, char * const argv[], const char *optstring); extern char *optarg; extern int optind, opterr, optopt; #include <getopt.h> int getopt_long(int argc, char * const argv[], const char *optstring, const struct option *longopts, int *longindex); int getopt_long_only(int argc, char * const argv[], const char *optstring, const struct option *longopts, int *longindex);
-
C语言main函数参数、返回值
2018-08-21 16:16:36main函数的返回值,用于说明程序的退出状态。如果返回0,则代表程序正常退出;返回其他数字的含义则由系统决定,通常,返回非零代表程序异常退出。 C语言main函数写法 很多人甚至市面上的一些书籍,都使用...引用:https://www.cnblogs.com/findumars/p/6220233.html
https://blog.csdn.net/Qsir/article/details/78286502
https://blog.csdn.net/u012219371/article/details/78964904
https://blog.csdn.net/baidu_41813368/article/details/81358559
C语言main函数返回值:
main函数的返回值,用于说明程序的退出状态。如果返回0,则代表程序正常退出;返回其他数字的含义则由系统决定,通常,返回非零代表程序异常退出。
C语言main函数写法
很多人甚至市面上的一些书籍,都使用了void main(),这其实是错误的,C/C++中从来没有定义过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 函数的定义。
在 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[] )
如果不需要从命令行中获取参数,请用int main(void) ;否则请用int main( int argc, char *argv[] )。 main 函数的返回值类型必须是 int ,这样返回值才能传递给程序的激活者(如操作系统)。 如果 main 函数的最后没有写 return 语句的话,C99 规定编译器要自动在生成的目标文件中(如 exe 文件)加入return 0;不过建议我们写的时候自己加上return 0;养成良好的习惯。方法一:int main(void)就不说了
方法二:int main(int argc,char *argv[]) 或 int main(int argc,char **argv)
argc:argument count,表示参数数量的意思;
argv:argument value,表示参数值
如何给程序传递参数?
Windows下生成.exe文件后,在控制台下直接在.exe文件 后加上要传递的参数即可,用空格隔开
argv[0]:保存程序名的首地址
argv[1]:保存输入的第一个字符串的首地址
argv[2]:保存输入的第二个字符串的首地址
...
argc:我们输入的参数个数+1,因为系统会自动给我们加一个参数,就是程序名称
#include<stdio.h> int main(int argc, char *argv[])//一般使用argc来统计参个数,argv来存储参数具体值 { printf("argc is %d \n", argc); int i; for (i = 0; i<argc; i++) { printf("arcv[%d] is %s\n", i, argv[i]); } return 0; }
注:argv数组的最后一个元素存放了一个NULL的指针
上面的代码也可以写成
#include<stdio.h> int main(int argc, char **argv)//一般使用argc来统计参个数,argv来存储参数具体值 { printf("argc is %d \n", argc); int i; for (i=0;argv[i]!=NULL;i++) { //printf("arcv[%d] is %s\n", i, argv[i]); printf("arcv[%d] is %s\n", i, *(argv+i)); } return 0; }
在VS中,项目名称->属性->调试->命令参数 也可以设置命令参数
方法三、int main(int argv,char * argv[],char * envp[])//参数三是环境变量
注:envp的最后一个元素也是指向NULL
#include<stdio.h> int main(int argc, char* argv[], char* envp[]) { int i = 0; for (; envp[i] != NULL; i++) { printf("%s\n", envp[i]); } printf("Hello World!\n"); return 0; }
-
C语言中main函数参数使用
2018-09-26 10:26:41在C99标准中定义main函数两种正确的写法 int main(void); int main(int argc, ...这里主要说明带参数的main函数如何使用 int main(int argc, char* argv[]) { int i; for (i=0; i&lt;argc; i++) prin... -
【C语言】字符串(main函数参数)
2019-07-04 00:59:15C语言字符串和main函数参数介绍与实例演示 -
c/c++程序main函数参数解析,以及参数传递的不同方法
2017-01-16 16:25:57main函数可以不带参数,也可以带参数,这个参数可以认为是 main函数的形式参数。C语言规定main函数的参数只能有两个,习惯上这两个参数写为argc和argv。所以C99标准中规定只有以下两种定义方式是正确 -
ROS向节点传递参数的方法总结(rosrun,launch) + (参数服务器,main函数参数)
2019-03-22 19:49:11ROS的节点有很多中调用方式,包括rosrun,launch,直接运行等,向节点内传递参数的方式也有很多,在此做个总结。 左侧专栏还在更新其他ROS实用技巧哦,关注一波? 1. rosrun + 参数服务器传递 ros::init(argc, ... -
用Xcode写C程序的main函数参数怎么输入?
2017-03-10 05:20:07 -
c语言中main函数参数argc,argv说明,及命令行中如何传参数
2016-11-28 16:18:59C/C++语言中的main函数,经常带有参数argc,argv,如下: int main(int argc, char** argv) int main(int argc, char* argv[]) 这两个参数的作用是什么呢?argc 是指命令行输入参数的个数,argv存储了所有的... -
C++main函数参数怎么传入
2015-05-07 10:49:54int main(int argc,char **argv) { ifstream infile; if (argc || !open_file(infile,argv[1])) { cerr !" ; return EXIT_FAILURE; } 这是代码的前几行,执行之后我什么都没做,就输出"No input file!",... -
C++:Main函数参数列表及参数类型转换
2017-07-01 13:56:08C++ 的main函数参数 数据类型转换 -
C语言main函数的参数
2019-08-04 07:56:56在我们之前编写的C程序中,main函数是没有参数的,但是在实际开发中,main函数一般都需要参数,没有参数的情况极少。 main函数的参数是从命令提示符下执行程序的时候传入,例如ls 命令。 在以上示例中ls命令... -
c语言main函数参数问题
2020-02-11 14:18:47我们经常用的main函数都是不带参数的。因此main 后的括号都是空括号。实际上,main函数可以带参数,这个参数可以认为是 main函数的形式参数。C语言规定main函数的参数只能有两个, 习惯上这两个参数写为argc和argv... -
main函数参数,在VS中向命令行添加参数的方法
2016-12-20 10:27:51使用main函数的参数,实现一个整数计算器,程序可以接受三个参数,第一个参数“-a”选项执行加法,“-s”选项执行减法,“-m”选项执行乘法,“-d”选项执行除法,后面两个参数为操作数。 例如:输入test.exe -a ... -
JAVA中main函数参数args,以及如何给args传参
2017-04-09 00:35:31JAVA main方法学习 -
gdb 调试运行设置main函数参数
2014-09-05 22:28:16TCPL中5.10为命令行参数,在程序运行前需要设置main函数中的参数,可是gdb调试时传递参数方法如下: 1. set args 可指定运行时参数。(如:set args 10 20 30 40 50) show args 命令可以查看设置好的... -
Linux C编程--main函数参数解析
2013-02-28 16:11:32我们经常用的main函数都是不带参数的。因此main 后的括号都是空括号。实际上,main函数可以带参数,这个参数可以认为是 main函数的形式参数。C语言规定main函数的参数只能有两个, 习惯上这两个参数写为argc和argv... -
C/C++中main函数参数说明
2013-09-05 16:12:10main()函数一般用int或者void形的。我比较喜欢用int型定义main。因为在结束的时候可以返回给操作系统一个值以表示执行情况。 int argc 这个东东用来表示你在命令行下输入命令的时候,一共有多少个参数。比方说... -
main函数的参数解析
2018-05-09 20:24:31}其实main函数有三个参数: 第一个参数:argc是个整型变量,表示命令行参数的个数(含第一个参数)。 第二个参数:argv是个字符指针的数组,每一个元素一个字符指针,指向一个字符串。这些字符串就是命令行中的每一... -
【C语言】浅析(命令行参数 )&&(main函数参数)
2018-05-11 16:47:03● 命令行参数类似于函数的参数,只是命令行参数是传送给命令的。命令执行时,内核已经将命令行参数放入命令的栈中,命令执行时则可以获取命令行参数,解析,执行。● 命令行参数使命令可以执行不同任务。linux... -
main函数的参数的含义
2018-04-24 17:05:34最近学习服务器网络编程,遇到了一个问题,main函数的参数,特意整理资料记录之!!! 下面是一个带参数的main函数! #include <iostream.h> int main(int argc,char *argv[]) { for(... -
java中main函数的参数
2017-12-14 08:28:39java中的main函数是一个程序执行的入口,main函数必须被声明为static的,在编译的时候就已经为其分配了内存,就是说,不用调用也能执行的,那么main函数的参数有什么作用呢?参数args的主要作用是为程序使用者在... -
linux下C语言main函数参数解析
2016-06-16 10:05:531. linux下常见的main函数有两种形式: int main(int argc, char **argv) int main(int argc, char * argv[]) 2. 参数介绍 第一个参数 argc:命令行中所有参数的个数(当然包括我们的程序名) 第二个参数 argv... -
【浅谈】main函数的三个参数
2018-05-08 15:43:55我们平时使用main函数时,在main函数参数这一栏常常省略不写,或者填上(void)。那么今天我们来看看main函数的参数。 main函数的参数有哪些? 在我们写好一个main函数框架后按F10开始单步调试,一直调试到... -
深度剖析c语言main函数---main函数的参数传递
2018-07-10 00:20:38在上文中,我们主要讲了c语言main函数的返回值问题,本文主要将main函数的参数传递。 main函数传参 首先说明的是,可能有些人认为main函数是不可传入参数的,但是实际上这是错误的。main函数可以从命令行获取... -
C++main函数及参数
2019-03-27 10:09:55转载自:... C++ main()函数及其参数 1、首先,想想C/C++在main函数之前和之后会做些什么? 我们看看底层的汇编代码: __start: : init stack; init heap; open stdin; open stdou... -
main函数的参数和可变参数列表
2018-04-28 17:47:24一.main函数的参数解析 一般来说,我们写main函数,就定义main(),它的参数部分看似没有,实际上,main函数也是有参数的,只是在我们写时省略了。 main函数的参数由三部分组成,分别是argc(int型,表示命令行参数... -
C++中main函数的参数
2018-12-23 16:51:40C++中main函数的参数 问题 对于一个C/CPP文件来说,一般都有main函数,一个程序的执行一定会是先从main函数这个入口开始,一个最基本的程序框架大概长这样: #include <stdio.h> int main() { return ... -
C++main函数中的形式参数
2018-01-24 09:43:29C程序最大的特点就是所有的程序都是用函数来装配的。main()称之为主函数,是所有程 ...C/C++语言中的main函数,经常带有参数argc,argv,如下: int main(int argc, char** argv) int main(int argc, char...