簡體   English   中英

將值傳遞給main(int,char **)

[英]Passing values to main(int, char**)

我有一個顯示ascii值和字母的程序,但是現在我修改了該程序以僅顯示我要查找的西班牙語字符。 該程序稱為,是的,您知道它為“ ascii”。 用戶要做的是鍵入C:>asciiC:>ascii all來顯示所有ascii字符。 要僅顯示西班牙語字符,用戶必須輸入C:>ascii es

為此,我編寫了這個簡單的程序

int main(int argc, char** argv) {
    if(argv[0] == "es"){
        abc::ascii_es();        
    }
    if(argv[0] == "all"){
        abc::ascii_all();
    }
    else
        abc::ascii_es();

    return 0;
}

但是程序總是在else條件關鍵字中跳轉到ascii_es方法。 我究竟做錯了什么?

問題:

  1. 您不是在比較字符串,而是在比較指針。 您可以通過將其中一個參數更改為std::string或使用strcmp(...) == 0來解決此問題。
  2. argv[0]是您的程序的名稱。 第一個參數使用argv[1]
  3. 您無需檢查程序是否有參數。 如果沒有,則訪問argv[1]將導致未定義的行為。

一些工作代碼:

#include <string>

int main(int argc, char** argv) {
    if (argc < 2)
        abc::ascii_es();
    else if (argv[1] == std::string("es"))
        abc::ascii_es();        
    else if (argv[1] == std::string("all"))
        abc::ascii_all();
    else
        abc::ascii_es();
    return 0;
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM