argc 與 argv 參數

C 語言程式的 main 函數如果不需要讀取任何來自於命令列的參數,則 main 函數就使用最簡單的寫法即可:

#include <stdio.h>
int main() {
  return 0;
}

若需要將執行程式時,使用者所輸入的命令列參數讀取進來,則可在 main 函數中加上 argc 與 argv 兩個參數:

#include <stdio.h>
int main(int argc, char *argv[]) {
  printf("We have %d arguments:\n", argc);
  for (int i = 0; i < argc; ++i) {
    printf("[%d] %s\n", i, argv[i]);
  }
  return 0;
}

使用 gcc 編譯:

gcc source.c

執行時就可以在命令列輸入要傳給程式的參數:

./a.out G. T. Wang
We have 4 arguments:
[0] ./a.out
[1] G.
[2] T.
[3] Wang

argv 陣列中包含了在命令列中所輸入的每一個參數,其中第一個元素是程式本身的名稱(在這裡就是./a.out),之後就是執行時所輸入的各個參數,其排列順序就跟輸入時的順序相同。而 argc 是一個整數,其值就是 argv 陣列的長度。

若執行程式時,不加任何參數,argv 的長度(argc 的值)就會是 1,也就是說 argv 就只包含程式本身的名稱:

./a.out
We have 1 arguments:
[0] ./a.out

這是 C++ 版本的程式碼,argc 與 argv 的用法完全相同:

#include <iostream>
int main(int argc, char *argv[]) {
  std::cout << "We have " << argc << " arguments" << std::endl;
  for (int i = 0; i < argc; ++i) {
    std::cout << "[" << i << "] " << argv[i] << std::endl;
  }
  return 0;
}

使用 g++ 編譯:

g++ source.cpp

執行:

./a.out G. T. Wang
We have 4 arguments
[0] ./a.out
[1] G.
[2] T.
[3] Wang

有些人會把 *argv[] 寫成 **argv 這種不同的寫法,就像這樣:

int main(int argc, char **argv) {
  // ...
}

兩種不同的寫法都是通用的,使用上沒有太大的差異。

原文链接: https://www.cnblogs.com/zhtook/p/13236088.html

欢迎关注

微信关注下方公众号,第一时间获取干货硬货;公众号内回复【pdf】免费获取数百本计算机经典书籍;

也有高质量的技术群,里面有嵌入式、搜广推等BAT大佬

    argc 與 argv 參數

原创文章受到原创版权保护。转载请注明出处:https://www.ccppcoding.com/archives/362351

非原创文章文中已经注明原地址,如有侵权,联系删除

关注公众号【高性能架构探索】,第一时间获取最新文章

转载文章受原作者版权保护。转载请注明原作者出处!

(0)
上一篇 2023年3月2日 下午2:19
下一篇 2023年3月2日 下午2:20

相关推荐