1. 程式人生 > >【C】main (int argc,char *argv[]) 或main (int argc,char **argv)後臺(CMD下)執行說明

【C】main (int argc,char *argv[]) 或main (int argc,char **argv)後臺(CMD下)執行說明

文章目錄

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、執行結果
在這裡插入圖片描述

三、參考說明

1、https://blog.csdn.net/lambol_8309/article/details/4524964