C参数不起作用?

C参数不起作用?,c,argument-passing,C,Argument Passing,为什么这样不行? 当我尝试使用-l或-s作为第一个参数时,if语句不起作用。他们总是转到else语句 #include <stdio.h> #include <fcntl.h> #include <errno.h> #include <string.h> #include <stdlib.h> int main(int argc, char* argv[]) { if (argv[1] == "-l") {

为什么这样不行? 当我尝试使用-l或-s作为第一个参数时,if语句不起作用。他们总是转到else语句

#include <stdio.h>
#include <fcntl.h>
#include <errno.h>
#include <string.h>
#include <stdlib.h>

int main(int argc, char* argv[])
{
    if (argv[1] == "-l")
    {
        printf("Yay!\n");
    }
    else if (argv[1] == "-s")
    {
        printf("Nay!\n");
    }
    else
    {
        printf("%s\n", argv[1]);
    }
        return 0;
}
#包括
#包括
#包括
#包括
#包括
int main(int argc,char*argv[])
{
如果(argv[1]=“-l”)
{
printf(“是的!\n”);
}
else if(argv[1]=“-s”)
{
printf(“否!\n”);
}
其他的
{
printf(“%s\n”,argv[1]);
}
返回0;
}

不能使用
=
运算符比较字符串-请改用
strcmp()


通过使用
==
比较字符串,可以比较
char*
指针的地址,而不是字符串值。

在C字符串中,通过strcmp函数进行比较。相反,你的比较只是指针。因此:

if (strcmp(argv[1],"-l") == 0)
{
    printf("Yay!\n");
}

你如何尝试运行它,会发生什么?你说的“不工作”是什么意思?输入是什么?输出是什么?您可能已经知道这一点,但是在尝试使用
argv[1]
之前,您还应该检查
argc>1
。大多数
#include
对于此片段是不必要的。。。