精华内容
下载资源
问答
  • c/c++程序main函数参数解析,以及参数传递的不同方法
    2021-05-22 11:52:05

    1. 程序运行时传递参数的不同方法:

    1)通过命令参数传递参数; 2) 通过txt文件读取参数。

    2. 方法举例

    1)通过命令参数传递参数,即解析main函数的参数。

    main函数可以不带参数,也可以带参数,这个参数可以认为是 main函数的形式参数。C语言规定main函数的参数只能有两个,习惯上这两个参数写为argc和argv。所以C99标准中规定只有以下两种定义方式是正确的:

    int main(void) //无参形式

    int main(int argc, char *argv[]) //有参形式

    当然有参形式可以进行演变,所以下面的写法也是正确的(同时变量名是可以更换的):

    int main(int argc, char **argv) //有参的另一种形式

    int parseOptions(int argc, char** argv, int &imgWid, int &imgHei, int &imgCnt)

    {

    int i = 0;

    if(argc == 1)

    {

    return -1;

    }

    for (i = 1; i < argc; i++)

    {

    if (strcmp(argv[i], "-w") == 0)

    {

    imgWid = (int)atoi(argv[++i]);

    }

    else if (strcmp(argv[i], "-h") == 0)

    {

    imgHei = (int)atoi(argv[++i]);

    }

    else if (strcmp(argv[i], "-c") == 0)

    {

    imgCnt = (int)atoi(argv[++i]);

    }

    else

    return -1;

    }

    return 0;

    }

    int main(int argc, char** argv)

    {

    int imgWid, imgHei, imgCnt;

    if(-1 == parseOptions(argc, argv, imgWid, imgHei, imgCnt))

    {

    printf("Get parameter failed!\n");

    exit(-1);

    }

    ...

    }

    运行方法为:

    a. 在vs下运行时:在工程属性的命令参数行中输入:-w 640 -h 480 -c 10 即可

    b. 在DOS下如果生成可执行文件为example.exe放在D盘内,则输入:D:example -w 640 -h 480 -c 10 即可

    2)通过TXT文件读取参数

    int main(int argc, char** argv)

    {

    int imgWid, imgHei, imgCnt;

    FILE* srcFile = NULL;

    srcFile = fopen("parameter_list.txt","r");

    if (srcFile == NULL)

    {

    printf("Open parameter_list failed!\n");

    exit(-1);

    }

    while (!feof(srcFile))

    {

    fscanf(srcFile,"%d", &imgWid);

    fscanf(srcFile,"%d", &imgHei);

    fscanf(srcFile,"%d", &imgCnt);

    printf("imgWid=%d imgHei=%d imgCnt=%d\n", imgWid, imgHei, imgCnt);

    ...

    }

    ...

    }

    parameter_list.txt文件中的参数如下:

    640 480 10

    1280 720 10

    1920 1080 10

    3840 2160 10

    

    

    更多相关内容
  • .NET Main函数参数解释过程和特殊规则.pdf
  • main函数参数解析

    2018-02-09 15:36:43
    而且每个函数在调用时都会形成栈帧,main函数也会形成自己的栈帧,那么main函数也会被调用,其实是_ _tmainCRTStartup函数调用main函数,当然main函数也有参数,如下图:接下来将会对main函数的三个参数进行解释:...

    我们都知道main函数是代码的入口,而且每个函数在调用时都会形成栈帧,main函数也会形成自己的栈帧,那么main函数也会被调用,其实是_ _tmainCRTStartup函数调用main函数,当然main函数也有参数,如下图:


    接下来将会对main函数的三个参数进行解释:


    结果为:

    当我们在命令行参数中加入 a,b,c三个参数时,产生的结果如上图。

    那再结合代码我们可以这样解释他们:


    注:argv数组的最后一个数组存放了一个NULL的指针。

    最后是对第三个参数char *envp[ ]的解释:


    结果为:


    结果都为环境变量。(截取部分)

    注:envp[ ]数组最后一个元素存放了NULL指针。


    展开全文
  • main函数的返回值用于说明程序的退出状态。如果返回0,则代表程序正常退出;返回其它数字的含义则由系统决定。通常,返回非零代表程序异常退出
  • c的Main函数参数解析

    2015-08-31 14:50:55
    所有的exe程序的启动都是从main函数开始,那么对于main函数参数怎么来解析,argc,argc到底表示的是什么,又是怎么来看的. 先贴出代码: // mianshi.cpp : 定义控制台应用程序的入口点。 // #include "stdafx.h...

    所有的exe程序的启动都是从main函数开始,那么对于main函数的参数怎么来解析,argc,argc到底表示的是什么,又是怎么来看的.

    先贴出代码:

    // mianshi.cpp : 定义控制台应用程序的入口点。
    //
    
    #include "stdafx.h"
    
    int _tmain(int argc, _TCHAR* argv[])
    {
    	int nCout = argc;
    	_TCHAR *ch1 = argv[0];
    	_TCHAR *ch2 = argv[1];
    	_TCHAR *ch3 = argv[2];
    	
    	MessageBox(NULL,ch1,L"dg",MB_OK);
    	MessageBox(NULL,ch2,L"dg",MB_OK);
    	MessageBox(NULL,ch3,L"dg",MB_OK);
    
    	system("pause");
    	return 0;
    }
    

    由于这里在基本设置里面使用的是unicode,所以用messagebox来测试

    在开头的地方打上一个端点,并在调试里面写入两个参数用空格隔开

    然后调试查看argv指向的内存地址可以发现:



    可以发现最开始的16个字节中存储的是3个地址,分别是path的地址,第一个参数的地址,第二个参数的地址。。需要说明的是为什么是16个字节,因为在这个实例测试或称中最少是3个地址,然后由于内存对齐的原因所以加上一个地址,如果参数过多,这个地方的字节数就是4的倍数了。。每个地址对应的就是一个有效参数的地址值

    展开全文
  • C++ main函数参数

    2021-09-29 09:51:08
    main函数的argc和argv参数是什么意思呢? 这两个参数主要是用来保存程序运行时传递给main函数的命令行参数的。 argc:是argument count 的缩写,保存运行时传递给main函数参数个数。 argv:是argument vector 的...
    int main(int argc, char* argv[]) 
    

    那main函数的argc和argv参数是什么意思呢?

    这两个参数主要是用来保存程序运行时传递给main函数的命令行参数的。

    argc:是argument count 的缩写,保存运行时传递给main函数的参数个数。
    argv:是argument vector 的缩写,保存运行时传递main函数的参数,类型是一个字符指针数组,每个元素是一个字符指针,指向一个命令行参数。
    argv[0]指向程序运行时的全路径名;

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

    argv[2] 指向程序在命令行中执行程序名后的第二个字符串;

    以此类推直到argv[argc]…

    argv[argc] 在C++中指向nullptr,在C语言中指向NULL。

    由于main函数不能被其他函数调用,因此不可能在程序内部取得实际值。main函数的参数值是从操作系统命令行上获取的。在window系统中,假如编译链接成的可执行文件为my_project.exe,则在命令提示符(快捷键windows+R,输入cmd)中,键入如下命令(可执行文件 参数 参数 参数 …):

    my_project.exe jisongxie 1996
     将会传递三个参数给main函数,第一个argv[0]是前面提到的文件名,第二个argv[1]是"jisongxie",第三个argv[2]是“1996”。同理,可以传入更多的参数。在ubuntu系统中,可以通过终端进行相同的操作。
     举个例子:输入如下程序

    #include <iostream>
    using std::cout;
    using std::endl;
    int main(int argc, char *argv[])
    {
    	cout << "参数个数=" << argc << endl;
    	for (int i = 0; i<argc; i++)
    	{
    		cout << "参数序号=" << i << " ";
    		cout << "参数值=" << argv[i] << endl;
    	}
    	//cout << argv[argc] << endl;
    	system("pause");
    	return 0;
    }
    

    在这里插入图片描述

    展开全文
  • main函数参数解析  main函数是有参数的,只是我们使用main函数时,大多数情况下会省略参数。接下来我们看一下main函数的原型,并对main函数的三个参数进行解析。 main函数原型 解析:  这里有三个参数。  ...
  • 目录argc与argvenv常见的环境变量环境变量相关命令通过代码查看环境变量./main执行和main执行是否应该使用第三个参数env C程序总是从main函数开始执行的,main函数的原型...argv[]表示传入main函数参数序列或指针...
  • linux下C语言main函数参数解析

    千次阅读 2016-06-16 10:05:53
    1. linux下常见的main函数有两种形式: int main(int argc, char **argv) int main(int argc, char * argv[]) 2. 参数介绍 第一个参数 argc:命令行中所有参数的个数(当然包括我们的程序名) 第二个参数 argv...
  • Linux C编程--main函数参数解析

    万次阅读 多人点赞 2013-02-28 16:11:32
    我们经常用的main函数都是不带参数的。因此main 后的括号都是空括号。实际上,main函数可以带参数,这个参数可以认为是 main函数的形式参数。C语言规定main函数参数只能有两个, 习惯上这两个参数写为argc和argv...
  • 【C语言】main函数参数解析

    千次阅读 2018-08-02 14:39:51
    每个C程序都必须有一个main函数main函数又称为主函数,是执行程序的起点,它被称之为函数,是否会像平时使用函数时需要自己的参数呢? 答案是肯定的,那么他都有那些参数呢? main函数的在vs2017环境下调试,可以...
  • 在C语言中,main()函数有三种形式。 1、无参数 #include <stdio> int main(void) { printf("Hello World!\n"); return 0; } 2、有两个参数 习惯上第一个参数是整型argc,保存了外部调用命令的参数个数,第二...
  • C语言main函数参数详解

    千次阅读 多人点赞 2020-12-10 16:27:29
    main函数参数 一共有三个: 1.int argc 整型变量 2.char *argv[] 字符指针的数组,通俗一点就是字符串数组,每个元素都是字符串 3.char *envp[] 字符串数组 这三个东西再怎么神秘,也只是函数参数,只不过是main函数...
  • C语言指针——main函数参数详解

    千次阅读 2018-05-22 20:58:26
    #define _CRT_SECURE_NO_WARNINGS #include <stdlib.h> #include <string.h> #include <...int main(int argc, char* argv[], char**env) { int i = 0; printf("******************* Begi...
  • main函数参数解析

    千次阅读 2018-05-09 20:24:31
    }其实main函数有三个参数: 第一个参数:argc是个整型变量,表示命令行参数的个数(含第一个参数)。 第二个参数:argv是个字符指针的数组,每一个元素一个字符指针,指向一个字符串。这些字符串就是命令行中的每一...
  • 以下用spring boot项目做一个示例: 这是spring boot的启动类 ...这时如果我们想在项目启动时传入参数到这个main方法,然后根据参数的不同来做相应的逻辑,以下做个传参的示例: public class SpringbootAp
  • C语言main函数参数

    万次阅读 多人点赞 2019-08-04 07:56:56
    在我们之前编写的C程序中,main函数是没有参数的,但是在实际开发中,main函数一般都需要参数,没有参数的情况极少。 main函数参数是从命令提示符下执行程序的时候传入,例如ls 命令。 在以上示例中ls命令...
  • C++ main函数main函数参数 1、main函数的几种形式 int main() int main(int argc) int main(int argc,char** argv)//int main(int argc,char* argv[]) 2、argc表示命令行参数的个数、argv表示命令行参数的值 ...
  • 主要介绍了C# Main方法的传入参数研究,相信大家不管是在java中还是C#中都经常见到public static void Main(string[] args)类似的语句,那这个args到底有什么用,你又知道多少呢?本文就专门研究了这个参数,相信可以让...
  • 深度解析main函数参数

    2018-11-09 21:50:15
    通常,我们所见到的main函数基本是下面这种形式: ...本文将围绕main函数的参数展开详细的叙述,下面是main函数参数的原型: int main( int argc, char *argv[ ], char *envp[ ] ) { program-statements...
  • 深入Main函数中的参数argc,argv的使用详解C/C++语言中的main函数,经常带有参数argc,argv,如下:复制代码 代码如下:int main(int argc, char** argv)这两个参数的作用是什么呢?argc 是指命令行输入参数的个数,...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 430,712
精华内容 172,284
关键字:

main函数参数解析

友情链接: shuzizhong.rar