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

时间:2014-12-17 12:26:35

标签: c string command-line-arguments string-comparison strcmp

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

这是代码:

#include <stdio.h>
#include <stdlib.h>

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

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

  

&#34; OMG !!&#34;

哪一部分错了?

4 个答案:

答案 0 :(得分:9)

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

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

您的代码应该是

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

如果您想检查argv[1]是否包含"-s"

答案 1 :(得分:2)

使用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!!");

答案 2 :(得分:1)

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

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

试试这个..

答案 3 :(得分:0)

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

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

在您的代码中尝试此操作。

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