在if语句中使用argv的奇怪问题

时间:2013-04-06 01:04:42

标签: c if-statement string-comparison argv

我在其中一个C程序中的if语句中遇到argv问题。我知道我一定会错过一些简单而愚蠢的事情(因为我在C中做过任何事情已经有一段时间了)。问题是,如果我在命令行中没有指定任何其他内容,它就不会doOtherStuff()。即使我做./a.out -i它仍然运行doStuff()。有谁看到这里可能缺少的东西?非常感谢你提前了!

int main(int argc, char *argv[])

    if(argv[1] == "-a" || "-A")
    {
       doStuff();
    }
    else
    {
        doOtherStuff();
    }
}

2 个答案:

答案 0 :(得分:4)

如果你想比较C中的字符串,你必须使用像strcmp这样的方法:http://www.cplusplus.com/reference/cstring/strcmp/

在C中,字符串实际上是一个字符数组,因此您要比较2个数组的内存地址(当然它们是不同的,因为它们是不同的数组)。

答案 1 :(得分:3)

您正在将C字符串与相等运算符==)进行比较。

您必须使用strcmp函数(在string.h中定义)。

像:

#include <string.h>

int main(int argc, char *argv[])
{
    if(strcmp(argv[1], "-a") == 0 || strcmp(argv[1], "-A") == 0)
    {
        doStuff();
    }
    else
    {
        doOtherStuff();
    }
}

请注意,字符串比较是编程中最基本的操作之一,您的if语句也不正确。如果您还没有这样做,请尝试阅读有关基础知识的更多信息。