zoukankan      html  css  js  c++  java
  • 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:
    ", argc);
      for (int i = 0; i < argc; ++i) {
        printf("[%d] %s
    ", 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) {
      // ...
    }

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

  • 相关阅读:
    史上最简单的Hibernate入门简单介绍
    极客Web前端开发资源大荟萃
    ios7 UIScrollView 尺寸问题
    用ahk脚本自己主动删除flashcookies
    CSS文字样式
    Windows 10 安装
    万圣节福利:红孩儿3D引擎开发课程《3ds max导出插件初步》
    算法实验 层序列表问题(二叉树)
    git配置别名
    git忽略特殊文件
  • 原文地址:https://www.cnblogs.com/zhtook/p/13236088.html
Copyright © 2011-2022 走看看