如何正确比较命令行参数?

我正在尝试编写一个在main中接受参数的C代码; 因此,当我在cmd中编写一些字符串时,程序会在其中执行某些操作。 但我做错了什么,我找不到它。

这是代码:

#include  #include  int main(int argc, char * argv[]){ //File name is main.c if(argc != 3) printf("Wrong!!!!!!!!!"); else if (argv[1] == "-s") girls(); //Prints "Girls" else if(argv[1] == "-k") boys(); //Prints "Boys" else printf("OMG!!"); } 

在cmd;

gcc -o gender main.c

gender -s pilkington

我输入那些命令。 总是输出

“我的天啊!!”

哪部分错了?

在你的代码中, argv[1] == "-s"是错误的部分。 使用==运算符无法完成字符串的比较。

要比较字符串,您需要使用strcmp()

你的代码应该是这样的

 if ( ! strcmp(argv[1], "-s")) { //code here } 

如果你想检查argv[1]包含"-s"

如果检查argv[1] == "-s"则条件不成立。 因为它是一个字符串,你可以使用strcmp函数。

  if(( strcmp(argv[1],"-s")) == 0) girls(); else if ((strcmp(argv[1],"-k")) == 0) boys(); 

试试这个..

使用strcmp(s1,s2)函数比较两个字符串。

  if (strcmp(argv[1],"-s")==0) girls(); //Prints "Girls" else if(strcmp(argv[1],"-k")==0) boys(); //Prints "Boys" else printf("OMG!!"); 

您必须使用strcmp函数比较字符串。 您不能简单地检查相等运算符中的字符串。

  int strcmp(const char *s1, const char *s2); 

在您的代码中尝试这一点。

 if ((strcmp(argv[1],"-s")==0)