argc & argv的使用
0. 使用你的命令提示字元
在進入正題的時候,這裏教你如何使用命令提示字元 (應該說如何會用命令列)。請您先按下開始->執行-> cmd.exe 按下 Enter。
好了後按下 "dir.exe /?",你會看到會有一堆參數跑出來,雖平常都說 "dir 這個指令是用來查目錄、檔案",但實際上dir 它是一個小的應用程序,副檔名是 .exe,只是在命令提示字元裏面我可以給它「外部參數」,比如說我鍵入
dir.exe C:\
它便會幫我找出 C:\ 底下所有檔案、資料夾,我再鍵入
dir.exe C:\ /b
它也會幫我找出 C:\ 底下所有資料夾與檔案,只是這次是簡單模式的輸出。這裏就可以開始說一點點 argc, argv 了。
第一次我鍵入 dir.exe C:\ ,總共有二個單字,所以 argc = 2;第一個字是 "dir.exe",所以 argv[0] = "dir.exe",第二個字是 "C:\",所以 argv[1] = "C:\\"。
第二次我鍵入 dir.exe C:\ /b,一樣的道理,argc = 3,argv[0]="dir.exe",argv[1] = "C:\\",argv[2] = "/b"。
1. main 函式傳回值
「現今」的 main 函式傳回值一律都是 int ,這也是您常看到 int main() 或是 int main(void);在早期,main 是可以用 void main() 方式,而現在部份 compiler 實做,即使你寫
main()
{
// dothing
}
很不建議這種寫法,實際上它是把它看成
int main()
{
// do thing
return 0;
}
2. main 函式引數列
在上面有提到傳回值是 int ,而上面的例子引數列都是 void ,事實上目前比較通用、能接用的是二種寫法,
int main()
int main(int argc, char *argv[])
第二種寫法就是您要問的 argv,回到第 0 點所提到的,這種程序事實上就是要在命令提示字元底下下參數纔會用到 argc, argv,你直接快點二下或是用 IDE 直接 compile - run,是看不出什麼結果的。
3. 範例 1 更多:http://www.51240.com
這裏先舉一個簡單的程序碼,我要寫的程序是,你於命令列輸入了什麼,我就把它輸出出來。
#include <stdio.h>
#include <stdlib.h>
int main(int argc, char *argv[])
{
int i=0;
printf("共 %d 個參數\n", argc);
for(i=0; i<argc; ++i){
printf("第 %d 個參數:%s\n", i+1, argv[i]);
}
// system("pause"); // 用命令字元的話就不要再暫停
return 0;
}
接下來就是重點了,怎麼去測試這個程序?假設我生成是 Test.exe,爲方便說明,先把它複製到 C:\ 底下。
開啓你的命令提示字元,輸入
"C:\Test.exe" Param1 Param2 Param3
你會發現結果是
共 4 個參數
第 1 個參數: "C:\Test.exe"
第 2 個參數: Param1
第 3 個參數: Param2
第 4 個參數: Param3
由上敘述可知,任何程序的 argc 必大於等於1,而且 argv[0] 就是程序名字本身。
4. 範例 2
現在假設要寫的這個程序是,輸入 sum.exe 1 2 3 4 56 7 ,後面跟一大堆數字,最後會把這些數字加總後再顯示出來,於是我們便可這麼做
#include <stdio.h>
#include <stdlib.h>
int main(int argc, char *argv[])
{
int i=0, sum=0;
for(i=1; i<argc; ++i) // 注意,我們要的數字是從 argv[1] 開始
{
sum += atoi(argv[i]);
// 由於 argv[i] 是字串,但我們要算的是"數字" 的總合,
// 所以用 atoi 將 argv[i] 這字串轉成數字再加總
}
printf("Sum=%d\n", sum); // 最後再輸出總合
return 0;
}
在進入正題的時候,這裏教你如何使用命令提示字元 (應該說如何會用命令列)。請您先按下開始->執行-> cmd.exe 按下 Enter。
好了後按下 "dir.exe /?",你會看到會有一堆參數跑出來,雖平常都說 "dir 這個指令是用來查目錄、檔案",但實際上dir 它是一個小的應用程序,副檔名是 .exe,只是在命令提示字元裏面我可以給它「外部參數」,比如說我鍵入
dir.exe C:\
它便會幫我找出 C:\ 底下所有檔案、資料夾,我再鍵入
dir.exe C:\ /b
它也會幫我找出 C:\ 底下所有資料夾與檔案,只是這次是簡單模式的輸出。這裏就可以開始說一點點 argc, argv 了。
第一次我鍵入 dir.exe C:\ ,總共有二個單字,所以 argc = 2;第一個字是 "dir.exe",所以 argv[0] = "dir.exe",第二個字是 "C:\",所以 argv[1] = "C:\\"。
第二次我鍵入 dir.exe C:\ /b,一樣的道理,argc = 3,argv[0]="dir.exe",argv[1] = "C:\\",argv[2] = "/b"。
1. main 函式傳回值
「現今」的 main 函式傳回值一律都是 int ,這也是您常看到 int main() 或是 int main(void);在早期,main 是可以用 void main() 方式,而現在部份 compiler 實做,即使你寫
main()
{
// dothing
}
很不建議這種寫法,實際上它是把它看成
int main()
{
// do thing
return 0;
}
2. main 函式引數列
在上面有提到傳回值是 int ,而上面的例子引數列都是 void ,事實上目前比較通用、能接用的是二種寫法,
int main()
int main(int argc, char *argv[])
第二種寫法就是您要問的 argv,回到第 0 點所提到的,這種程序事實上就是要在命令提示字元底下下參數纔會用到 argc, argv,你直接快點二下或是用 IDE 直接 compile - run,是看不出什麼結果的。
3. 範例 1 更多:http://www.51240.com
這裏先舉一個簡單的程序碼,我要寫的程序是,你於命令列輸入了什麼,我就把它輸出出來。
#include <stdio.h>
#include <stdlib.h>
int main(int argc, char *argv[])
{
int i=0;
printf("共 %d 個參數\n", argc);
for(i=0; i<argc; ++i){
printf("第 %d 個參數:%s\n", i+1, argv[i]);
}
// system("pause"); // 用命令字元的話就不要再暫停
return 0;
}
接下來就是重點了,怎麼去測試這個程序?假設我生成是 Test.exe,爲方便說明,先把它複製到 C:\ 底下。
開啓你的命令提示字元,輸入
"C:\Test.exe" Param1 Param2 Param3
你會發現結果是
共 4 個參數
第 1 個參數: "C:\Test.exe"
第 2 個參數: Param1
第 3 個參數: Param2
第 4 個參數: Param3
由上敘述可知,任何程序的 argc 必大於等於1,而且 argv[0] 就是程序名字本身。
4. 範例 2
現在假設要寫的這個程序是,輸入 sum.exe 1 2 3 4 56 7 ,後面跟一大堆數字,最後會把這些數字加總後再顯示出來,於是我們便可這麼做
#include <stdio.h>
#include <stdlib.h>
int main(int argc, char *argv[])
{
int i=0, sum=0;
for(i=1; i<argc; ++i) // 注意,我們要的數字是從 argv[1] 開始
{
sum += atoi(argv[i]);
// 由於 argv[i] 是字串,但我們要算的是"數字" 的總合,
// 所以用 atoi 將 argv[i] 這字串轉成數字再加總
}
printf("Sum=%d\n", sum); // 最後再輸出總合
return 0;
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.