繁体   English   中英

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

[英]How to properly compare command-line arguments?

我正在尝试编写一个以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

我输入该命令。 卜输出总是

“我的天啊!!”

哪一部分错了?

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

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

您的代码应如下所示

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

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

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

如果您检查argv[1] == "-s"则条件将不成立。 由于它是字符串,因此可以使用strcmp函数。

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

尝试这个..

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

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

在您的代码中尝试一下。

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM