Main函数中的argc和argv应用举例

详解main函数参数argc、argv及如何传参 1、main()函数参数 2、main函数如何传参 2.1 环境准备 2.2 通过 Powershell 窗口传参 2.3 通过vs界面传参 3、int main() 和 int main(int argc, char *argv[]) 特点 阅读详情


尽管之前写过一篇关于argc,argv方面的文章(http://blog.youkuaiyun.com/carson2005/article/details/5766192)但依然有朋友搞不太清楚。所以,这里,我举两个简单的例子来详细说明,并告诉你一步一步的操作步骤。

例1:打开指定路径下的一个文本文件,读取其内容,并将其写入到指定路径下的另一个文件当中。其中,采用argv来传递输入文件路径和输出文件路径。

参考代码如下:

#include "stdafx.h"

#include "iostream"

#include "fstream"

using namespace std;

int _tmain(int argc, char* argv[])

{

if (argc != 3)//输入参数必须为三个,第一个为test 第二个为输入文件的路径,第三个为输出文件的路径

{

cout<<"argument error!"<<endl;

cout<<"example: test c:/test.txt d:/testOut.txt"<<endl;

system("pause");

exit(-1);

}

for (int i=0; i<3; i++)

{

cout<<argv[i]<<endl;

}

ifstream fileIn; 

fileIn.open(argv[1], ios::in);//根据用户设定的参数,打开输入文件

if (fileIn.fail())//如果文件打开失败,直接退出

{

cout<<"fileIn open error: "<<endl;

system("pause");

exit(-1);

}

ofstream fileOut;

fileOut.open(argv[2], ios::out);//根据用户设定的参数,打开(创建)输出文件

if (!fileOut)

{

cout<<"fileOut open error..."<<endl;

system("pause");

exit(-1);

}

char str[500];

while(!fileIn.eof())

{

memset(str, '\0', 500*sizeof(char));

fileIn.getline(str, 500);

fileOut<<str<<endl;

cout<<str<<endl;

}

fileIn.close();

fileOut<<"I have learn the usage of argc and argv in main function! Thanks to VitoLee!"<<endl;

fileOut.close();

system("pause");

return 0;

}

笔者在E:\VCprograms\路径下面,创建了一个名为test的控制台工程,将上述代码进行编译,在工程所在的文件件下,生成了一个名为test.txt的可执行文件。需要注意的是,因为该main函数利用了main函数中的argc,argv,所以,不能直接鼠标双击来启动。而必须采用命令行的方式进行启动。具体步骤为:

(1)电脑屏幕左下角,开始---->运行--->在出现的对话框中输入“cmd”,如下图所示:

 

(2)回车,出现了一个类似于dos的界面,如下所示:

 

(3)由于我们生成的test.ext位于E:\VCprograms\test\Debug,故而,输入:“cd E:\VCprograms\test\Debug”,回车,出现如下的界面:

 

(4)输入“e:”,回车(需要特别提醒的是,e后面有一个冒号!)出现如下界面:

 

(5)输入test,后输入文件的绝对路径和输出文件的绝对路径,并以空格进行区分。例如,笔者输入的是:“test c:/test.txt d:/result.txt”。(注意:Argc是argument count的简写,也就是参数的个数,很显然,这里的argc=3,而argv显然是一个指针数组,对于笔者的输入而言,argv[0]="test",argv[1]="c:/test.txt",argv[2]="d:/result.txt"。)输入完三个参数之后,回车,如下图所示:

 

 

这里,我在程序里面,分别输出了argv[0],argv[1],argv[2],之后,程序按照笔者输入的参数“c:/test.txt”,打开位于c盘下面的test.txt文件,将其内容“It's my first example for argc and argv in main function!”读取出来(当然,你的文件里面,可能并不是这句话。。。),并根据笔者输入的参数“d:/result.txt”,在d盘下面创建一个名为result.txt的文件,并将输入文件中读取的内容写入到result.txt输出文件中。就这样,搞定!

 

例2:结合opencv,用argv来传递参数,从而打开一个图片文件。

参考代码如下所示:

#include "stdafx.h"

#include "cv.h"

#include "highgui.h"

#include "iostream"

using namespace std;

int main(int argc, char* argv[])

{

if (argc != 2)

{

cout<<"argument error..."<<endl;

system("pause");

exit(-1);

}

IplImage *img = cvLoadImage(argv[1]);

cvNamedWindow("img");

cvShowImage("img", img);

cvWaitKey(0);

system("pause");

return 0;

}

跟上个例子一样,还是在E:\VCprograms下面创建一个名为test的工程,编译以上代码,在E:\VCprograms\test\Debug下面,生成了一个名为test.exe的可执行文件。下面,让我们从命令行进行启动:

(1)屏幕左下角,开始--->运行,输入"cmd",回车,结果如下:

(2)输入“cd E:\VCprograms\test\Debug”,回车,结果如下:

(3)输入“e:”,回车,结果如下:

(4)输入"test",并输入一个空格,然后,鼠标拖动一个图片文件到cmd.exe上(例如,鼠标拖动c盘下面的test.jpg文件到cmd.exe),结果如下:这也就意味着,用鼠标拖动之后,windows可以自动将该文件的绝对路径添加上去。

(5)回车,如果不出意外,程序将会创建一个名为“img”的窗口,并在其中显示你拖动的图片的内容。

Main函数中的argc,argv就是这么简单。

FPGA串口通信----uart(一) 通过PLL锁相环IP的使用,可以输入时钟进行分频,倍频,也可以产生多路时钟输出信号。外部提供晶振的原因:①Fpga电路大多数需要时序分析②晶振在Fpga内部占空间大,所以放置于外部PCB板上Uart异步传输速率不能很快的原因:考虑到工程实际问题,假如时钟周期大(传输速率慢的话),采取到数据电平变化的边沿时刻的概率会小很多,这样数据也很准确,通常uart适用于2M. 阅读详情

相关推荐

如何下载最新版本的VMware Workstation

随着虚拟化技术的发展,VMware Workstation作为行业领先的桌面虚拟化软件,为用户提供了在单一物理计算机上运行多个操作系统的能力。本文将详细介绍如何从Broadcom支持网站下载最新的VMware Workstation Pro版本。

安呀智数据坊的博客 665

c语言中argc和argv[ ]的作用及用法

      在c语言编程中,经常可以看到如下的main函数声明: int main(int argc, char *argv[]) 那么a...

Black_黑色的博客 6万+

MATLAB锂离子电池伪二维(P2D)模型实现

锂离子电池伪二维(P2D)模型的MATLAB实现。该模型基于Newman等人提出的经典电化学模型,考虑了固液相扩散、电荷守恒和电化学反应动力学。

hie98894的博客 1928

C和C++中argc和argv的含义以及用法

各位小伙伴在接触C和C++的时候,总会看到argc和argv这两个参数,这篇文章分析这两个参数的含义以及作用,并且分享一些使用的应用场景

explorer5568的博客 9158

1.2、基于卷积神经网络(CNN)的车牌自动识别系统(matlab)

基于卷积神经网络(CNN)的车牌自动识别系统(matlab)

XU157303764的博客 2910

数学建模学习(120):使用Python实现基于AHP的供应商选择分析

使用Python实现基于AHP的供应商选择分析

全栈川川 910

C语言中函数main的参数argc和argv是什么

我的意思“程序运行时,会自动将从输入的获取的字符串分割成多个字符串,然后将这些字符串存放在 argv 数组,数组中最后一个元素被存放为空指针。但是一般情况下,如果单独说“argv”,指的是数组的指针。是一个存放字符类型元素地址的数组,因为 C 中是有字符串的概念的:将每个字符存放在 char 数组,最后一个元素为。是一个指向一个字符串数组的指针,数组包含了参数,每个字符串就是一个参数,最后一个元素为。这里需要细致说一下,之前写的太简洁了,评论有人没看懂,有一些底层逻辑需要说明一下。

ZhongUncle的博客 1万+

Xilinx FPGA平台GTX简易使用教程(五)GTX收发测试及示例工程介绍

GTX IP配置完了,你不得搞个回环测试一番?

数字IC/FPGA杂货铺,找一找,或许有你想要的~ 1万+

linux下C编程main函数的参数问题

在做linux下的应用编程时,main函数被定义成这个样子:int main(char argc,char *argv[]) argc保存的是命令行参数的数目,而argv是指向个参数的各指针所构成的数组。 argv是命令行参数个数 不带参运行 argc值为1 argv是命令行参数 argv[0]代表程序本身 argv[1]代表第一个参数 以此类推 mmap.c编译好之后得到二进制文件mmap 带...

yihuanyihuan的博客 243

深度学习实战35-图卷积神经网络GCN模型的搭建与应用

大家好,我是微学AI,今天给大家介绍一下深度学习实战35-图卷积神经网络GCN模型的搭建与应用,GCN是一种用于处理图结构数据的深度学习模型,它可以捕捉节点之间的拓扑关系和局部特征,并进行图级别的预测和分类任务。下面将介绍如何搭建并应用GCN模型。

微学AI的博客 2225

YOLOv5算法改进(22)— 更换主干网络MobileNetv3 + 添加CA注意力机制

本节课就让我们结合论文来对YOLOv5进行组合改进(更换主干网络MobileNetv3 + 添加CA注意力机制),小白必学~!🌈

小哥谈 2816

C语言:指针数组做main()函数的形参 void main(int argc, char *argv[])

  指针数组做main()函数的形参 以前的程序中,main函数的第一行一般写成 下面的形式: void main(void) 实际上,main()函数可以有参数,例如: void main(int argc, char *argv[]) argc是命令行总的参数个数; argv[]是argc个参数,其中第0...

weixin_42072280的博客 2872

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

linux c++ main函数的参数argc, argv

main()函数参数 ANSI-C(美国国家标准协会,C的第一个标准ANSI发布)在C89/C99中main()函数主要形式为: (1).int main(void) (2).int main(int argc,char *argv[]) = int main(int argc,char **argv). 其参数argc和argv用于运行时,把命令行参数传入主程序.其中ARG是指arguments,即参数. (1).int argc:英文名为arguments count(参数计数) count of cm

sinat_37112938的博客 581

Probability and Statistics - 4th edition

Probability and Statistics - 4th edition

IMSL CNL 7.0.0 (x86-64)Crack

IMSL CNL 7.0.0 (x86-64)Crack intel的算法库破解文件,这是C++版本的破解文件

int main(int argc, char*argv[])理解

   在调用一个可执行程序时,某些情况下需要向程序传递参数。如我们可以在控制台中键入notepad.exe,回车后将执行记事本程序。如果我们希望在打开notepad时同时打开一个文本文件,可以在notepad.exe  后面跟上文件的路径和名字,如notepad.exe   example.txt(文件在当前路径)。         那么程序中如何能得到这些输入参数呢?这个工作是编译器帮我们完成的...

kkkkde的博客 1134

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

解析main函数的参数的作用与应用场景

刚学习C语言的你,多数都会使用ide,比如visual studio等等,一般生成的代码模板都是这样的/* code */return 0;通常来说,用ide点点按钮编译文件的话,这两个参数你是用不到的,但是你难道没有好奇过这两个参数有啥用吗😕。今天我就简单解析一下这两个参数的作用与应用场景百度百科是这样定义这两个参数的ARGc和ARGv中的ARG指的是**“参数”*ARGuments, argument counter 和 argument vector* ) [1]至少有两个参数至主函数。

m0_73366745的博客 489

int main(int argc, char **argv)中两个参考的用法

int main(int argc, char **argv)中两个参考的用法  argc,argv 用命令行编译程序时有用。    主函数main中变量(int argc,char *argv[ ])的含义    有些编译器允许将main()的返回类型声明为void,这已不再是合法的C++    main(int argc, char *argv[ ], char *env[

fdqw_sph的博客 278

main函数中的参数 argc 和 argv 的含义和用处

一、main() 函数参数简要说明 通常情况下,小伙伴们在写主函数时,都是 void main() 或者是 int main() {…return 0;} 。 但是 ANSI-C(美国国家标准协会,C 的第一个标准 ANSI 发布)在 C89/C99 中说明 main() 函数主要形式为: (1)  int main(void) (2)  int main(int argc,char *argv[...

Change_Improve的博客 9292

main函数中的argc和argv

C++ main函数的参数   C++的main函数可以没有输入参数,也可以有输入参数,而且只能有两个参数,习惯上coding如下: int main(int argc, char* argv[]) 或者 int main(int argc, char** argv)   其中,argc = argument count :表示传入main函数的数组元素个数,为int类型,而 argv = argument vector :表示传入main函数的指针数组,为char**类型。第一个数组元素argv

m0_52902391的博客 3109

C语言--main函数的两个参数argc和argv

1、理论部分: C语言规定main函数的参数只能有两个,习惯上这两个参数写为argc和argv。 第一个形参:argc(arguments count参数数)必须是整型变量 第二个形参:argv(arguments value/vector参数值)必须是指向字符串的指针数组。 所以main函数的函数应写为以下两种形式的一种: int main(int argc,char *argv[]){…} i...

tyustli 1万+

C++ main函数中参数argc和argv含义及用法

argc 是 argument count的缩写,表示传入main函数的参数个数; argv 是 argument vector的缩写,表示传入main函数的参数序列或指针,并且第一个参数argv[0]一定是程序的名称,并且包含了程序所在的完整路径,所以确切的说需要我们输入的main函数的参数个数应该是argc-1个; 简单用法示例,新建工程键代码: #inc...

weixin_30338461的博客 9423

对C语言main函数中argc和argv[]的理解

大家应该都有一个模糊的记忆,C语言中main函数是程序的入口函数,所以程序运行时main函数调用别的函数,并且给别的函数传入参数。但是没人告诉我们是谁“调用”的main函数。其实我们可以理解为是操作系统调用的main函数,所以main函数的参数应该是操作系统给的,也就是说我们的在命令行界面运行程序是,需要给main函数参数;...

杰儿__er 的博客 8815
上一篇: 老生常谈,正确使用memset
下一篇: C++ main函数中参数argc和argv含义及用法
csshuke
博客等级 码龄16年 1517粉丝 8原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值