《c programming language》中讲到:

在支持C 语言的环境中,可以在程序开始执行时将命令行参数传递给程序。调用主函数main
时,它带有两个参数。第一个参数(习惯上称为argc,用于参数计数)的值表示运行程序时命令行中参数的数目;第二个参数(称为argv,用于参数向量)是一个指向字符串数组的指针,其中每个字符串对应一个参数。我们通常用多级指针处理这些字符串。最简单的例子是程序echo,它将命令行参数回显在屏幕上的一行中,其中命令行中各参数之间用空格隔开。也就是说,命令

<nobr> echohello,world </nobr>
将打印下列输出:
<nobr> hello,world </nobr>
按照C
语言的约定,argv[0]的值是启动该程序的程序名,因此argc
的值至少为1。如果argc的值为1,则说明程序名后面没有命令行参数。在上面的例子中,argc的值为3,argv[0]、argv[1]和argv[2]的值分别为“echo”、“hello,”,以及“world”。第一个可选参数为argv[1],而最后一个可选参数为argv[argc-1]。另外,ANSI
标准要求argv[argc]的值必须为一空指针(参见图5-11)。

下面来实现 echo命令

版本1:

#include<stdio.h>
int main(int argc,char *argv[])
{
    int i;
    for(i=1;i<argc;i++)
        printf("%s%s",argv[i],(i < argc-1)?" ":"");
    printf("\n");
    return 0;
}

运行结果:

版本2

#include<stdio.h>
int main(int argc,char *argv[])
{
    while(--argc)
        printf("%s%s",*++argv,(argc > 1)? " ":"");
    printf("\n");
}

运行结果: