簡體   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