【C】main (int argc,char *argv[]) 或main (int argc,char **argv)後臺(CMD下)執行說明
阿新 • • 發佈:2018-11-26
文章目錄
main (int argc,char *argv[]) 或main (int argc,char **argv)後臺(CMD下)執行說明
說明
1、VC Code編輯程式碼
2、搭配GCC
3、CMD切換到.c檔案路徑下
一、main (int argc,char *argv[]) 或main (int argc,char **argv)區別
一句話:char *argv[] = char **argv
二 、詳細介紹
main函式的引數只能有兩個, 習慣上這兩個引數寫為argc和argv。
1、argc
1、argc 記錄了使用者在執行程式的命令列中輸入的引數的個數
2、argv
1、argv引數是字串指標陣列,其各元素值為命令列中各字串(引數均按字串處理)的首地址。 指標陣列的長度即為引數個數
2、argv[]是argc個引數,其中第0個引數是程式的全名,以後的引數命令列後面跟的使用者輸入的引數
3、char *argv[]是一個字元陣列,其大小是int argc,主要用於命令列引數 argv[]引數,數組裡每個元素代表一個引數
4、argv陣列中的第一個單元
3、案例
1、案例一
例子:
輸入: a b c d
結果: argc = 4
argv[0]="a"
argv[1]="b"
argv[2]="c"
argv[3]="d"
2、案例二
int argc
int argc用來表示你在命令列下輸入命令的時候,一共有多少個引數。比方說你的程式編譯後,可執行檔案是test.exe
1: D:/tc2>test
這個時候,argc的值是1
2: D:/tc2>test.exe myarg1 myarg2 的話,argc的值是3。也就是命令名加上兩個引數,一共三個引數
char *argv[]
char *argv[] 用來取得你所輸入的引數
3: D:/tc2>test
這個時候,argc的值是1,argv[0]的值是 "test"
4: D:/tc2>test myarg1 myarg2
這個時候,argc的值是3,argc[0]的值是"test",argc[1]的值是"myarg1",argc[2]的值是"myarg2"。
這個東東一般用來為程式提供非常重要的資訊,如:資料檔名,等等。
如:copy a.c b.txt
這個時候,a.c和b.txt就是所謂的“非常重要的資訊”。不指定這兩個檔案,你沒法進行拷貝。
當你的程式用到argc和argv這兩個引數的時候,可以簡單地通過判斷argc的值,來看看程式的引數是否符合要求
4、案例三
1、程式碼
#include <stdio.h>
#include <stdlib.h> // 提供exit();
int main(int argc, char *argv[])
{
//printf("%d\n",argc);//引數個數
//printf("%s\n",argv[0]);//第一個引數,程式名
//printf("%s\n",argv[1]);//第二個引數,待處理的txt文件
char *filename = argv[1]; // 待讀取的文字文件
FILE *fp; // 檔案指標
int ch; // 讀取檔案,儲存每個字元的地方
//fp = fopen("./wenben/wenben.txt", "r+")
if ((fp = fopen(filename, "r+")) == NULL) // 以更新模式開啟檔案(以讀寫檔案開啟)
{ // 允許以讀取方式開啟一個已有的文字檔案
fprintf(stdout, "無法開啟檔案\"wenben.txt\".\n"); //stdout標準輸出
exit(EXIT_FAILURE); //表示沒有成功地執行一個程式--退出
}
// 成功開啟檔案
while ((ch = getc(fp)) != EOF)// getc()和getchar()的區別是告訴getc()要使用哪一個檔案
{ // ECF預設為-1
putc(ch, stdout); // putchar(ch);相同-- 指定ch檔案
}
return 0;
}
2、執行結果