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

Passing values to main(int, char**)

本文关键字:char int 值传 main      更新时间:2023-10-16

我有一个显示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条件关键字中的CCD_ 4方法。我做错了什么?

问题:

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