linux命令行:传递错误的参数?

时间:2014-03-05 05:10:33

标签: c++

我在Ubuntu上调试我的C ++代码,我执行./main path < input.txt

argv[1]应该包含一个字符串“path”,由下面的GDB验证。

但是,即使argv[1] == "path"应该返回true,程序也会跳过我的第一个条件。

有什么想法吗?

...
(gdb) n
181     if(argv[1] == "path")
(gdb) p argv[1]
$1 = 0xbffffba3 "path"
(gdb) n
183     else if(argc == 1)
(gdb) 

1 个答案:

答案 0 :(得分:2)

即使两个字符串相同,它们也会在内存中占据不同的位置。当检查argv[1]是否等于固定字符串"path"时,它不是逐个字符地执行它:它正在查看是否指向固定字符串{{1 }}与传递到"path"的{​​{1}}变量相同,但不是。{/ p>

您需要使用strcmp来测试这两个字符串的相等性:

argv[1]