我正在尝试编写一个在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;
哪一部分错了?
答案 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)