1. 程式人生 > >【C】echo命令的實現

【C】echo命令的實現

《c programming language》中講到:

在支援C 語言的環境中,可以在程式開始執行時將命令列引數傳遞給程式。呼叫主函式main
時,它帶有兩個引數。第一個引數(習慣上稱為argc,用於引數計數)的值表示執行程式時命令列中引數的數目;第二個引數(稱為argv,用於引數向量)是一個指向字串陣列的指標,其中每個字串對應一個引數。我們通常用多級指標處理這些字串。最簡單的例子是程式echo,它將命令列引數回顯在螢幕上的一行中,其中命令列中各引數之間用空格隔開。也就是說,命令

echohello,world 將列印下列輸出: hello,world 按照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"); }

這裡寫圖片描述

執行結果:
這裡寫圖片描述