将命令参数与argv 进行比较不起作用

我试图将命令的参数与argv []进行比较,但它不起作用。 这是我的代码。

./a.out -d 1 

在主要function

 int main (int argc, char * const argv[]) { if (argv[1] == "-d") // call some function here } 

但这不起作用……我不知道为什么这种比较不起作用。

您无法使用==比较字符串。 相反,使用strcmp

 #include  int main (int argc, char * const argv[]) { if (strcmp(argv[1], "-d") == 0) // call some function here } 

原因是"..."的值是一个指针,表示字符串中第一个字符的位置,其后的其余字符。 在代码中指定"-d"时,它会在内存中生成一个全新的字符串。 由于新字符串和argv[1]位置不同, ==将返回0

在C ++中,让std :: string为你工作:

 #include  int main (int argc, char * const argv[]) { if (argv[1] == std::string("-d")) // call some function here } 

在C中你必须使用strcmp:

 if (strcmp(argv[1], "-d") == 0) // call some function here } 

你可能想在这里使用strcmp。

不会那样:

 if (argv[0] == "-d") 

0不是1