我在其中一个C程序中的if语句中遇到argv问题。我知道我一定会错过一些简单而愚蠢的事情(因为我在C中做过任何事情已经有一段时间了)。问题是,如果我在命令行中没有指定任何其他内容,它就不会doOtherStuff()。即使我做./a.out -i它仍然运行doStuff()。有谁看到这里可能缺少的东西?非常感谢你提前了!
int main(int argc, char *argv[])
if(argv[1] == "-a" || "-A")
{
doStuff();
}
else
{
doOtherStuff();
}
}
答案 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
语句也不正确。如果您还没有这样做,请尝试阅读有关基础知识的更多信息。