2

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

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

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

2 回答 2

4

如果要比较 C 中的字符串,则必须使用 strcmp 之类的方法:http ://www.cplusplus.com/reference/cstring/strcmp/

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

于 2013-04-06T01:06:12.273 回答
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陈述也不正确。如果您还没有这样做,请尝试阅读有关基础知识的更多信息。

于 2013-04-06T01:06:44.813 回答