A Child's History of England.80
阿新 • • 發佈:2022-01-02
在有些C語言程式中,我們會看到main函式有如下的寫法:
int main(int argc, char* argv[]);
或者是這樣的:
int main(int argc, char** argv);
給main傳參通過argc和argv這兩個引數來實現。執行程式時,可以從命令列傳值給 C 程式。這些值被稱為命令列引數,它們對程式很重要,特別是當您想從外部控制程式,而不是在程式碼內對這些值進行硬編碼時,就顯得尤為重要了。
命令列引數是使用 main() 函式引數來處理的,其中,argc是指傳入引數的個數,argv[ ]是一個字元指標陣列,指向傳遞給程式的每個引數。
下面是一個通過指定命令列引數實現簡單計算器的程式
#include <string.h>
int Add(int, int);
int Sub(int, int);
int Mul(int, int);
int Div(int, int);
int main(int argc, char* argv[])
{
if(argc != 4)
{
printf("Parameters should be 4.\n");
return -1;
}
int param1 = atoi(argv[1]);
int param3 = atoi(argv[3]);
if(!strcmp(argv[2], "+"))
{
printf("%s %s %s = %d\n", argv[1], argv[2], argv[3], Add(param1, param3));
}
else if(!strcmp(argv[2], "-"))
{
printf("%s %s %s = %d\n", argv[1], argv[2], argv[3], Sub(param1, param3));
}
else if(!strcmp(argv[2 ], "*"))
{
printf("%s %s %s = %d\n", argv[1], argv[2], argv[3], Mul(param1, param3));
}
else if(!strcmp(argv[2], "/"))
{
printf("%s %s %s = %d\n", argv[1], argv[2], argv[3], Div(param1, param3));
}
else
{
printf("Parameters fault.");
return -1;
}
return 0;
}
int Add(int a, int b)
{
return a + b;
}
int Sub(int a, int b)
{
return a - b;
}
int Mul(int a, int b)
{
return a * b;
}
int Div(int a, int b)
{
return a / b;
}
其中C 庫函式int atoi(const char *str)把引數str所指向的字串轉換為一個整數(型別為 int 型)。由於命令列引數都是字元指標型別,想要對引數進行數學運算,必須把字串轉成int型別。
編譯執行如下:
可以看到,通過給定不同的命令列引數,在同一個程式中可以實現不同的功能。
新人才疏學淺,有錯的地方敬請指正!!
本文來自部落格園,作者:夏末終年,轉載請註明出處:https://www.cnblogs.com/xiamozhongnian/p/15869439.html