int main(int argc, char **argv)
但這兩個變數有什麼應用呢?這兩個是用來傳遞參數到程式裡面。
舉例來說:
./a.out CCC aaa bbb
argv[0] argv[1] argv[2] argv[3], argc=4
argc會記錄我們總共輸入了幾個參數;而argv則會記錄每一個變數的內容。以上列例子來說,我們總共輸入了./a.out, CCC, aaa 和 bbb四個參數,所以argc就等於4,而argv會從argv[0]開始依序記錄每一個參數值。這可以大大的增加我們執行程式的便利性。
以檔案輸入輸出來說,假設每次都要去程式碼中修改檔案的名稱,是否太麻煩了呢?因此可以利用這兩個參數,來增加執行程式時候的便利性。底下結合一個檔案輸入輸出的例子。
#include <stdio.h>
#include <stdlib.h>
#define BUFFER_MAX 64
int main(int argc, char **argv)
{
FILE *fp_in, *fp_out;
char *buf_in;
int ret_in;
char *in_file, *out_file;
in_file = argv[1];
out_file = argv[2];
fp_in = fopen(in_file, "rb");
fp_out = fopen(out_file, "wb");
buf_in = (char *)malloc(BUFFER_MAX);
ret_in = fread(buf_in,1,BUFFER_MAX,fp_in);
while(ret_in>0)
{
fwrite(buf_in,1,BUFFER_MAX,fp_out);
ret_in=fread(buf_in,1,BUFFER_MAX,fp_in);
}
fclose(fp_in);
fclose(fp_out);
return 0;
}
執行結果如下:
輸入檔案:aaa.txt
輸出檔案:bbb.txt
使用argc,argv參數,就可以簡化不用每次都去修改程式的麻煩,在檔案輸出輸入這部分挺方便的!
沒有留言:
張貼留言