带参数的main函数如何在linux和windows下执行

#include<iostream>
#include<string>

using namespace std;
int main(int argc, char *argv[])
{
	string str;
	for (int i = 0;i != argc;++i)
	{
		cout << "argv["<<i<<"] :"<<argv[i] << endl;
	}

}

转:带参数的main函数,应该怎样运行呢

运行方法:
(假设你的程序为Untitled1.exe)
打开命令提示符:
转到你的Untitled1.exe的目录,
输入下列命令:
Untitled1.exe a basdfsa 1314324 -k -f
回车就可以运行了。

这时,在Main函数里定义的
int main(int argc, char *args[])
里的argc = 6,就是表示有六个参数,
对应的
args[0] = "Untitled1.exe";
args[1] = "a";
args[2] = "basdfsa";
args[3] = "1314324";
args[4] = "-k";
args[5] = "-f";

就是这样子了。
那么linux命令行运行这程序时, 怎么给main函数传递参数。 

例如

程序名为:mmap.c
参数为: 1    abcd.txt

那么在Linux命令行怎么运行。
int main(int argc,char* argv[]);
argv是命令行参数个数 不带参运行 argc值为1

argv是命令行参数
argv[0]代表程序本身
argv[1]代表第一个参数
以此类推

mmap.c编译好之后得到二进制文件mmap

带两个参数 这样 就ok了:
./mmap 1 abcd.txt

程序中

操作系统为main传递的参数 argc 值为3
argv[0] 为 mmap
argv[1]为 1
argv[2] 为abcd.txt
三个参数都是 char*类型

提问者评价

Thanks you
 
 
 
 
int argc,char *argv 
agrc表示参数的个数 
argv储存参数 

这个函数的意思是逐一输出参数

实际上,main函数也可以带参数。带参数main函数的定义格式如下:
void main(int argc, char *argv[])
{
... ...
}
argc和argv是main函数的形式参数。这两个形式参数的类型是系统规定的。如果main函数要带参数,就是这两个类型的参数;否则main函数就没有参数。变量名称argc和argv是常规的名称,当然也可以换成其他名称。
那么,实际参数是如何传递给main函数的argc和argv的呢?我们知道,C程序在编译和链接后,都生成一个exe文件,执行该exe文件时,可以直接执行;也可以在命令行下带参数执行,命令行执行的形式为:
可执行文件名称 参数1 参数2 ... ... 参数n
可执行文件名称和参数、参数之间均使用空格隔开。例如,我们在DOS下运行copy c:\test.txt d:\test.txt,可执行文件名称为copy,参数1为字符串“c:\test.txt”,参数2为“d:\test.txt”。结果copy命令将c:\test.txt拷贝到d盘,目标文件取为test.txt。
如果按照这种方法执行,命令行字符串将作为实际参数传递给main函数。具体为:
(1) 可执行文件名称和所有参数的个数之和传递给argc;
(2) 可执行文件名称(包括路径名称)作为一个字符串,首地址被赋给argv[0],参数1也作为一个字符串,首地址被赋给argv[1],... ...依次类推。
例如,现在运行命令行(test是编译后的exe文件名称):
C:\TC\test how are you
那么test工程的main函数参数argc=4;
argv[0]将保存字符串"C:\TC\test"的首地址;
argv[1]将保存字符串"how"的首地址;
argv[2]将保存字符串"are"的首地址;
argv[3]将保存字符串"you"的首地址;
下面的例子打印所有的argv参数:
main(int argc, char *argv[])
{
int i;
printf("\nTotal %d arguments",argc);
for(i=0;i<argc;i++)
{
printf("\nArgument %d = %s ",i+1, argv[i]);
}
}
如果编译后的exe文件名称为test,在DOS下运行C:\TC\test how are you,结果输出:
Total 4 arguments
Argument 1 = C:\TC\test.exe
Argument 2 = how
Argument 3 = are
Argument 4 = you
我们也可以在调试状态下输入命令行参数,方法是:
在TurboC的Options菜单下有一个子菜单Arguments,选择该项并确定,弹出输入窗口;在输入窗口键入命令行参数即可。比如要调试上述的test,可以在输入窗口键入how are you。在调试过程中,可执行文件名称和参数字符串将被传递给main函数的形式参数。
在DOS系统下,人们常常希望在运行exe的同时,传递一些有用的信息。例如copy.exe,运行时将源文件名称和目的文件名称作为参数传入。利用指针数组argv作为main函数的形式参数,可以满足这种需要。

猜你喜欢

转载自blog.csdn.net/qq_38619342/article/details/84672787