int main(int argc, char** argv)

2024-08-22 16:32
文章标签 int main argv char argc

本文主要是介绍int main(int argc, char** argv),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

argc是命令行总的参数个数,是实际参数个数+1,因为argv[0]是编译后的可执行文件名

argv[]是argc个参数,其中第0个参数是程序的全名,以后的参数为命令行后的用户输入参数。

假设程序的名称为prog,
1.当只输入prog,则由操作系统传来的参数为:
    argc=1,表示只有一程序名称。
    argc只有一个元素,argv[0]指向输入的程序路径及名称:./prog
2.当输入prog para_1,有一个参数,则由操作系统传来的参数为:
    argc=2,表示除了程序名外还有一个参数。
    argv[0]指向输入的程序路径及名称。
    argv[1]指向参数para_1字符串。
3.当输入prog para_1 para_2 有2个参数,则由操作系统传来的参数为:
    argc=3,表示除了程序名外还有2个参数。
    argv[0]指向输入的程序路径及名称。
    argv[1]指向参数para_1字符串。
    argv[2]指向参数para_2字符串。

有四种写法:

int main()

int main(int argc) //不常用

     int main(int argc, char** argv)

int main(int argc, char** argv, char** env)

例子:

//programname testmain1.exe
#include <iostream>
#include <cstdlib>
using namespace std;
int main(int argc, char** argv, char** env)
{
int i;
cout<< "These are the "<< argc <<" command- line arguments passed to main:"<<endl;
for(i=0; i<= argc ; i++)
cout<<"argv["<<i<<"]: "<<argv[i]<<endl;
cout<<"The environment strings on this system are:  "<<endl;
for(i=0;env[i]!=NULL;i++)
cout<< "env{"<<i<<"]: "<<env[i]<<endl;
}

在cmd中运行testmain1.exe

f:\vs2010\testmain1\debug\testmain1 firt_argument 3 4

结果:


The arguments argc and argv of main is used as a way to send arguments to a program, the possibly most familiar way is to use the good ol' terminal where an user could type cat file. Here the word cat is a program that takes a file and outputs it to standard output (stdout).

The program receives the number of arguments in argc and the vector of arguments in argv, in the above the argument count would be two (The program name counts as the first argument) and theargument vector would contain [cat,file,null]. While the last element being a null-pointer.

Commonly, you would write like this:

int  // Specifies that type of variable the function returns.// main() must return an integer
main ( int arc, char **argv ) {// codereturn 0; // Indicates that everything vent well.
}

If your program does not require any arguments, it is equally valid to write a main-function in the following fashion:

int main() {// codereturn 0; // Zero indicates success, while any // Non-Zero value indicates a failure/error
}

In the early versions of the C language, there was no int before main as this was implied. Today, this is considered to be an error.

On POSIX-compliant systems (and Windows), there exists the possibility to use a third parameter char **envp which contains a vector of the programs environment variables. Further variations of the argument list of the main function exists, but I will not detail it here since it is non-standard.

Also, the naming of the variables is a convention and has no actual meaning. It is always a good idea to adhere to this so that you do not confuse others, but i would be equally valid to define main as

int main(int c, char **v, char **e) {// codereturn 0;
}

And for your second question, there is several ways to send arguments to a program. I would recommend you to look at the exec*()family of functions which is POSIX-standard, but it is probablyeasier to just use system("command arg1 arg2").

Hope this helps.



这篇关于int main(int argc, char** argv)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1096794

相关文章

跟我一起玩《linux内核设计的艺术》第1章(四)——from setup.s to head.s,这回一定让main滚出来!(已解封)

看到书上1.3的大标题,以为马上就要见着main了,其实啊,还早着呢,光看setup.s和head.s的代码量就知道,跟bootsect.s没有可比性,真多……这确实需要包括我在内的大家多一些耐心,相信见着main后,大家的信心和干劲会上一个台阶,加油! 既然上篇已经玩转gdb,接下来的讲解肯定是边调试边分析书上的内容,纯理论讲解其实我并不在行。 setup.s: 目标:争取把setup.

main函数执行前、后再执行的代码

一、main结束 不代表整个进程结束  (1)全局对象的构造函数会在main 函数之前执行,          全局对象的析构函数会在main函数之后执行;          用atexit注册的函数也会在main之后执行。  (2)一些全局变量、对象和静态变量、对象的空间分配和赋初值就是在执行main函数之前,而main函数执行完后,还要去执行一些诸如释放空间、释放资源使用权等操作   (3)

Oracle之用TO_CHAR函数将日期格式转化为不带前导零的月份和日

要求: 1、日期格式转化成字符串格式,月和日前面的0需要去掉,如日期2024-09-06需要转化成2024-9-6; 2、如果用截取拼接函数写法就会复杂,最好用TO_CHAR函数格式化实现。 正确写法: SELECT TO_CHAR(SYSDATE,'YYYY-fmMM-dd') AS DATE1 , -- 执行结果为 2024-9-6TO_CHAR(SYSDATE,'fmYYYY-MM-d

【C语言】---- 基本数据类型(char、int、float)

1 基本数据类型 C语言中的基本数据类型包括整型、浮点型和字符型,每种类型都有不同的存储大小和表示范围。以下是它们的常见表示形式和特点: 1.1 字符型 char类型用于表示单个字符,通常用于表示文本数据。char类型也被用来存储字符,但也可以用来存储较小的整数。在C语言中,char类型的大小一般为1字节(8位)。char类型可以是有符号的或无符号的,这取决于编译器和平台的实现。 1.2

mysql数据库中的字符串长度函数:LENGTH() 与 CHAR_LENGTH()

在数据库管理系统中,处理字符串数据时,了解字符串的长度是一个常见且重要的需求。无论是为了数据验证、格式化输出,还是在进行复杂的查询操作中,准确获取字符串的长度都是必不可少的。SQL标准提供了几种函数来帮助我们实现这一目标,其中LENGTH()和CHAR_LENGTH()是两个常被提及的函数,尽管它们在某些数据库系统中可能表现出相似的行为,但在一些细节上存在差异。本文将深入探讨这两个函数的用法及其区

TC开发中写多行属性char**处理方法

//申请一个动态的数组 char ** indeta_s = (char**)MEM_alloc( sizeof(char*)vec_indeta.size()+1); for(int k=0;k<vec_indeta.size();k++){ printf(“indeta添加到数组\n”); //给数组对象分配一个动态的字符串长度 indeta_s[k]=(char)MEM_alloc( siz

如何简便的将List<Integer>转换成int[]?

使用Java 8的流(Streams)  ArrayList<Integer> list = new ArrayList<>();int[] intArray = list.stream().mapToInt(Integer::intValue).toArray();  若是maven项目可使用Apache Commons Lang库 <dependency> <groupId>

RGB色转为灰度色算法-img2ascii_char

一、基础   对于彩色转灰度,有一个很著名的心理学公式: Gray = R0.299 + G0.587 + B0.114 二、整数算法   而实际应用时,希望避免低速的浮点运算,所以需要整数算法。   注意到系数都是3位精度的没有,我们可以将它们缩放1000倍来实现整数运算算法: Gray = (R299 + G587 + B114 + 500) / 1000   RGB一般是8位精度,现在缩放1

Syntax error on token int, VariableDeclaratorId expected after this token

Syntax error on token "int", VariableDeclaratorId expected after this token,看图,   <item name=" " type="id"/>; 这个的name没有,看图 删掉这行就行了,R.java就不会报错了!!!!!!!!!!!

Exception in thread main java.lang.NoClassDefFoundError: org/apache/juli/l

Exception in thread "main" java.lang.NoClassDefFoundError: org/apache/juli/l MyEclipse整合免安装版的Tomcat7,------> 看图吧 最后这个就可以在myeclipse里,使用你的tomcat,而不是用.bat打开!!!!