C参数不起作用?

时间:2010-02-16 10:53:26

标签: c argument-passing

为什么这不起作用? 当我尝试使用-l或-s作为第一个参数时,if语句不会使用。他们总是去发表其他声明。

#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;
}

2 个答案:

答案 0 :(得分:10)

您无法使用==运算符比较字符串 - 请改用strcmp()

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

答案 1 :(得分:4)

在C字符串中通过strcmp函数进行比较。相反,你比较指针。所以:

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