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

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

  • 相关阅读:
    转载:PHP的session过期设置
    转载:php实现记住密码自动登录
    jQuery方法大全
    转载: IE、FF、Safari、OP不同浏览器兼容报告
    div布局的小心得
    PHP MVC模式在网站架构中的实现分析
    梳理一下 html 中的一些基本概念
    DNN学习笔记代码学习:Null 荣
    DNN学习笔记:DNN类中的ProviderType字段 荣
    在苏州 荣
  • 原文地址:https://www.cnblogs.com/zhtook/p/13236088.html
Copyright © 2020-2023  润新知