C/C中的命令行参数++

C/C++最重要的函数是main()函数。它主要由int的返回类型定义,没有参数:

null
int main() { /* ... */ } 

我们也可以在C和C++中给出命令行参数。在操作系统的命令行外壳中,命令行参数在程序名称之后给出。 为了传递命令行参数,我们通常使用两个参数定义main():第一个参数是命令行参数的数量,第二个参数是命令行参数的列表。

int main(int argc, char *argv[]) { /* ... */ }

int main(int argc, char **argv) { /* ... */ }
  • argc(参数计数) 是int,存储用户传递的命令行参数数,包括程序名。所以,如果我们将一个值传递给一个程序,argc的值将是2(一个用于参数,一个用于程序名)
  • argc的值应为非负。
  • argv(参数向量) 是列出所有参数的字符指针数组。
  • 如果argc大于零,则从argv[0]到argv[argc-1]的数组元素将包含指向字符串的指针。
  • Argv[0]是程序名,之后直到Argv[argc-1]每个元素都是命令行参数。

为了更好地理解,请在linux机器上运行此代码。

// Name of program mainreturn.cpp
#include <iostream>
using namespace std;
int main( int argc, char ** argv)
{
cout << "You have entered " << argc
<< " arguments:" << "" ;
for ( int i = 0; i < argc; ++i)
cout << argv[i] << "" ;
return 0;
}


输入:

$ g++ mainreturn.cpp -o main 
$ ./main geeks for geeks

输出:

You have entered 4 arguments:
./main
geeks
for
geeks

注: C和C++标准也允许其他平台相关的格式;例如,UNIX(虽然不是POSIX 1)和微软Visual C++有第三个参数赋予程序环境,否则在STDLIB中通过GETEV访问。h:参考 C程序打印环境变量 详细信息。

命令行参数的属性:

  1. 它们被传递给main()函数。
  2. 它们是调用程序时提供给程序的参数。
  3. 它们用于从外部控制程序,而不是在代码内部硬编码这些值。
  4. argv[argc]是一个空指针。
  5. argv[0]保存程序的名称。
  6. argv[1]指向第一个命令行参数,argv[n]指向最后一个参数。

注: 可以传递所有由空格分隔的命令行参数,但如果参数本身有空格,则可以通过将这些参数放在双引号“”或单引号内来传递这些参数。

// C program to illustrate
// command line arguments
#include<stdio.h>
int main( int argc, char * argv[])
{
int counter;
printf ( "Program Name Is: %s" ,argv[0]);
if (argc==1)
printf ( "No Extra Command Line Argument Passed Other Than Program Name" );
if (argc>=2)
{
printf ( "Number Of Arguments Passed: %d" ,argc);
printf ( "----Following Are The Command Line Arguments Passed----" );
for (counter=0;counter<argc;counter++)
printf ( "argv[%d]: %s" ,counter,argv[counter]);
}
return 0;
}


不同场景下的输出:

  1. 毫无争议: 当编译并执行上述代码而不传递任何参数时,它将生成以下输出。
    $ ./a.out
    Program Name Is: ./a.out
    No Extra Command Line Argument Passed Other Than Program Name
    
  2. 三个论点: 当使用三个参数编译和执行上述代码时,它将生成以下输出。
    $ ./a.out First Second Third
    Program Name Is: ./a.out
    Number Of Arguments Passed: 4
    ----Following Are The Command Line Arguments Passed----
    argv[0]: ./a.out
    argv[1]: First
    argv[2]: Second
    argv[3]: Third
    
  3. 单参数: 当上面的代码用一个由空格分隔但包含双引号的参数编译和执行时,它会生成以下输出。
    $ ./a.out "First Second Third"
    Program Name Is: ./a.out
    Number Of Arguments Passed: 2
    ----Following Are The Command Line Arguments Passed----
    argv[0]: ./a.out
    argv[1]: First Second Third
    
  4. 单参数,引号中用空格分隔: 当编译和执行上述代码时,使用一个由空格分隔但包含单引号的参数,它将生成以下输出。
    $ ./a.out 'First Second Third'
    Program Name Is: ./a.out
    Number Of Arguments Passed: 2
    ----Following Are The Command Line Arguments Passed----
    argv[0]: ./a.out
    argv[1]: First Second Third
    

参考资料: http://www.cprogramming.com/tutorial/lesson14.html http://c0x.coding-guidelines.com/5.1.2.2.1.html

本文由 卡提克·阿胡亚 阿瓦杜特·帕塔德 .如果你喜欢GeekSforgek,并想贡献自己的力量,你也可以使用 写极客。组织 或者把你的文章寄去评论-team@geeksforgeeks.org.看到你的文章出现在Geeksforgeks主页上,并帮助其他极客。
如果您发现任何不正确的地方,或者您想分享有关上述主题的更多信息,请写下评论。
© 版权声明
THE END
喜欢就支持一下吧
点赞8 分享