c语言的命令行参数

时间:2021-08-12 14:28:40

C语言命令行参数

C语言命令行参数实例代码教程 -它是可能的C程序执行时,在命令行中传递一些值。这些值被称为命令行参数,很多时候,你的程序是非常重要的,特别是当你要控制你的程序从外部而不是硬编码在代码中的这些值。

它是可能的C程序执行时,在命令行中传递一些值。这些值被称为命令行参数,很多时候,你的程序是非常重要的,特别是当你要控制你的程序从外部而不是硬编码在代码中的这些值。

处理命令行参数使用主要()函数的参数ARGC是指传递的参数个数和argv []是一个数组的指针,它指向每个参数传递给该程序。下面是一个简单的例子,检查是否有提供任何参数的命令行,并采取相应的行动:

#include <stdio.h>

int main( int argc, char *argv[] )
{
if( argc == 2 )
{
printf("The argument supplied is %s\n", argv[1]);
}
else if( argc > 2 )
{
printf("Too many arguments supplied.\n");
}
else
{
printf("One argument expected.\n");
}
}

当上面的代码被编译并执行一个单独的参数,它会产生以下结果。

$./a.out testing
The argument supplied is testing

当上面的代码被编译并执行一个单独的参数,它会产生以下结果。

$./a.out testing1 testing2
Too many arguments supplied.

当上面的代码编译和执行不传递任何参数的情况下,它会产生以下结果。

$./a.out
One argument expected

应该指出的argv [0]包含该程序的名称和argv[1]的第一个命令行参数提供的是一个指针,和* ARGV[N]是最后一个参数。如果没有提供参数,ARGC将是一个,否则,如果你传递一个参数,那么ARGC设置为2。

您通过了所有的命令行参数用空格隔开,但如果论点本身所具有的空间,那么你可以通过这些参数的双引号内的“或单引号''。让我们重新写上面的例子再一次,我们将打印程序的名字,我们还通过把双引号内的命令行参数:

#include <stdio.h>

int main( int argc, char *argv[] )
{
printf("Program name %s\n", argv[0]);

if( argc == 2 )
{
printf("The argument supplied is %s\n", argv[1]);
}
else if( argc > 2 )
{
printf("Too many arguments supplied - by www.yiibai.com.\n");
}
else
{
printf("One argument expected.\n");
}
}

当上面的代码编译和执行分开的空间,但在双引号内的一个参数,它会产生以下结果。

$./a.out "testing1 testing2"

Progranm name ./a.out
The argument supplied is testing1 testing2

命令行参数的最大作用就是让我们可以在程序之外控制程序,例如linux或者dos中我们经常使用的命令,从本质上将是一个程序;而我们使用的参数,就是该命令(对应的程序)的命令行参数。

         正是由于命令行的这么重要的作用,所以它成为各种编程语言不可缺少的功能,只是实现细节上略有不同,但大体上都是一样的,而且都比较简单。

1. 先想一想

1.1 程序中在哪里接收命令行参数(where)

         命令行参数,顾名思义,就是在命令行调用程序时传递的参数,那么谁来接收呢,一定是main函数了,因为程序是从main函数开始执行的啊。那作为一个函数,main怎么接收参数呢,很明显,用参数接收是最简单的方式。

1.2 程序中怎样接收去接收参数(how)

        想一下现在linux或者dos命令中使用参数的形式,你是否能想到一个比现在的方式更简单的方式:【命令 选项 参数】。我是想不出来了,那么针对这种方式,如何来接收呢。其实也很简单,因为它们使用空格分开的,所以我们只要将它们作为字符串依次存在一个数组就行了,也就是使用一个指针数组,每个元素是一个字符指针。对于数组我们经常使用的一个特性就是数组的长度,为了防止每次都自己编写代码求长度(实际上是重复劳动,因为求一个指针数组的长度代码是固定的),所以显式的提供给我们这个长度是比较好的。


注意事项:

        1. argv是一个指针数组,要明白它的存数格式。它的每个元素都是一个字符指针,数组的末尾是一个NULL指针

        2. 也是由于argv是一个指针数组,它指向数组的第一个元素(是一个字符指针),所以argv是一个指向字符指针的指针,所以可以将其声明为char **argv。即声明为:【 int main( int argc, char **argv ) 】

        3. 参数名称是不重要的,你可以声明为其它的名字,比如 【 int main( int a, char *b[] ) 】 都是可以的。

        4. 指针数组argv的第 1 个元素,即argv[0],是程序名,也就是你的可执行文件的名字。

        5. 如果你输入的参数中有空格,应该使用双引号括起来。

执行结果:(默认得到的可执行文件为my_echo.ext,在执行函数时,传递参数为hello world, hello C!)。如果在命令行中打开,使用my_echo.exe hello world, hello C!

[cpp] view plaincopyprint?
  1. argc == 5
  2. hello world, hello C!

分析:只需要弄清楚指针数组的内部结构,画了张图,见下面。

c语言的命令行参数