1. 程式人生 > >main函式的引數解析及實現整數計算器

main函式的引數解析及實現整數計算器

main函式其實是有引數的

int main(int argc , char* argv[],char* envp[])
{
    //程式碼片
}

這裡有三個引數 :
第一個:argc是個整形變數,表示命令列引數的個數(含第一個引數,就是含.exe的字元)
第二個:argv是個字元指標的陣列,每個元素是一個字元指標,指向一個字串,這些字串就是命令列中的每一個引數
第三個:envp是字元指標的陣列,陣列的每一個原元素是一個指向一個環境變數(字串)的字元指標

int main(int argc, char* argv[], char* envp[])
{
    int i=0;
    for
(i=0; i<argc; i++) { printf("%s\n",argv[i]); } return 0; }

這裡的輸出結果是可執行程式的.exe檔案的路徑
在argv陣列的最後一個元素存放的是NULL,這是argv陣列的結束標誌

int main(int argc,char* argv[],char* envp[])
{
    int i=0;
    while(envp[i] != NULL)
    {
        printf("%s\n",envp[i]);
        i++;
    }
    return 0;
}

在這裡輸出的結果是環境變數
envp陣列的最後一個元素也存放的是NULL指標

使用main函式的引數,實現一個整數計算器,程式可以接受三個引數,第一個引數“-a”加法“-s”減法“-m”乘法“-d”除法,後面兩個引數 為運算元

#include<stdio.h>
#include<stdlib.h>
#include<string.h>
int myadd(int x,int y)
{
    return x+y;
}
int mysub(int x,int y)
{
    return x-y;
}
int mymul(int x,int
y) { return x*y; } int mydiv(int x,int y) { return x/y; } void usage(const char* proc) { printf("usage:\r\n\t%s[-a/-s/-m/-d]data1 data2\n",proc); } int main(int argc,char* argv[]) { if(argc != 4) { usage(argv[0]); return 1; } int res = 0; if(strcmp(argv[],"-a")==0) { res=myadd[atoi(argv[2]),[atoi(argv[3])]; } else if(strcmp(argv[],"-s")==0) { res=mysub[atoi(argv[2]),[atoi(argv[3])]; } else if(strcmp(argv[],"-m")==0) { res=mymul[atoi(argv[2]),[atoi(argv[3])]; } else if(strcmp(argv[],"-d")==0) { res=mydiv[atoi(argv[2]),[atoi(argv[3])]; } else { usage(argv[0]); return 1; } printf("result:%d\n",ret); return 0; } //atoi 可以把字元轉化成整形

如果有什麼不對的地方,可以評論告訴我,望指導!