将值传递给main(int,char **)

时间:2014-09-16 20:20:49

标签: c++ visual-c++ gcc

我有一个显示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 个答案:

答案 0 :(得分:5)

的问题:

  1. 你不是在比较字符串,而是在比较指针。您可以通过将其中一个参数更改为std::string或使用strcmp(...) == 0
  2. 来解决此问题
  3. argv[0]是您的计划的名称。使用argv[1]作为第一个参数。
  4. 您没有检查该程序是否存在参数。如果没有,那么访问argv[1]将导致未定义的行为。
  5. 一些工作代码:

    #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;
    }