2

为什么这不起作用?当我尝试使用 -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;
}
4

2 回答 2

10

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

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

于 2010-02-16T10:54:50.737 回答
4

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

if (strcmp(argv[1],"-l") == 0)
{
    printf("Yay!\n");
}
于 2010-02-16T10:55:48.970 回答