首页 > 其他 > 详细

argc 與 argv 參數

时间:2020-07-04 19:10:30      阅读:27      评论:0      收藏:0      [点我收藏+]

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) {
  // ...
}

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

argc 與 argv 參數

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

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!