不能锻炼为什么这个C条件不成功
问题描述:
我正在编写一些C代码作为大学作业的一部分。考虑代码:不能锻炼为什么这个C条件不成功
printf("%s\n", argv[1]);
if ((argv[1] == "--verbose") || (argv[1] == "-v")) {
printf("%d\n", argc);
}
现在:printf("%s\n", argv[1]);
打印“--verbose”所以我知道应该argv[1] == "--verbose"
是真实的,但行printf("%d\n", argc);
从未执行。我无法锻炼为什么。有任何想法吗?
答
+1
现货,接受并继续! – 2010-11-24 01:26:58
答
因为你不能在C中用==比较字符串。使用strcmp或类似的。
答
您不应该使用strcmp
来比较字符串吗?当然,argv[1] == "--verbose"
不会比较字符串与字母的平等。
答
在你的代码中,你实际上是将argv[1]
指针(指向包含程序第一个参数的字符串)的内容与每个字符串的地址(“-v”等)进行比较。这在所有情况下都保证是错误的。
您应该使用strcmp()
函数或类似函数来比较字符串本身,而不是它们的地址。
以这种方式使用`==`来比较字符串的*位置*,而不是它们的内容。 – caf 2010-11-24 01:35:04