main函式的引數解析及實現整數計算器
阿新 • • 發佈:2019-01-22
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 可以把字元轉化成整形
如果有什麼不對的地方,可以評論告訴我,望指導!