将命令参数与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
?