→ Dannvix:為什麼會出現 argc/argv ... 完全不同用途吧= = 11/01 09:42
推 loveflames:argc是程式執行前輸入的字串數,跟這例子無關吧 11/01 10:21
------------------------------------------------------------------------------
剛剛起床,臨時給了個例子,若有闕漏尚請板友指正,謝謝.
#include<stdio.h>
#include <stdlib.h>
int main(int argc, char* argv[])
{
int count;
int max;
int *parray;
/*創建動態陣列*/
parray = (int*)malloc((argc - 1) * sizeof(int));
for(count = 0; count < argc - 1; count ++)
{
*(parray + count) = atoi(argv[count + 1]);
}
/*這邊開始檢查參數是否正確,像是參數至少要三個 : 檔名 數字1 數字2
*當然還要檢查是否數字有小於100,不過這邊只實做了檢查參數數目,
*其他檢查實做給需要者自行撰寫 */
if(argc <= 2)
{
printf("用法: %s 數字1 數字2 數字3 ...\n",argv[0]);
return 0;
}
/*下面開始找最大值*/
max = *parray;
for(count = 1; count < argc - 1; count ++)
{
if(max < *(parray + count))
{
max = *(parray + count);
}
}
printf("最大值是 %d\n", max);
/*別忘了要把記憶體還回去*/
free(parray);
return 0;
}
----------------------------------------------------------------
實際測試:
bigdick@bigdick:~/code$ clear && gcc arg_example.c && ./a.out 1 2 3
最大值是 3
就算數字超過10個也行:
bigdick@bigdick:~/code$ ./a.out 1 100 2010 30505 41 6 8 9 10 22 31
最大值是 30505
如果輸入的參數不夠就給你警告:
bigdick@bigdick:~/code$ ./a.out 1
用法: ./a.out 數字1 數字2 數字3 ...
這樣用我覺得整個程式比較自由一點
作業環境在linux debian Lenny 上 gcc 4.1.3 可正常編譯
-----------------------------------------------------------------
※ 編輯: DEATHX 來自: 118.161.185.142 (11/01 11:31)
→ james732:原po連陣列都不太了解 用到動態配置有點殘忍...XDDD 11/01 11:33
推 ledia:我覺得這樣不太好用, 因為 cmdline buffer 總是有限制 11/01 11:40
→ ledia:如果能用 stdin/file io 讀資料會比較好 11/01 11:40