【发布时间】:2015-02-13 16:36:54
【问题描述】:
我编写了代码,我想查看两个 char* 'strings' 是否相等。我在代码中写了打印语句来帮助我调试它。
基本上,commands数组是:[a, b, null]
用户输入的 cmd 可以是任何东西,但如果它是 a、b 或 null,那么我们要进入 if 语句。
for (i = 0; i < 3; i++){
printf("cmd.name = : %s\nCommand = %s\n", cmd->name, commands[i]);
if (cmd->name == commands[i]){
printf("inside if\n");
valid = 1;
}
}
打印出来:
cmd.name = : a
Command = a
cmd.name = : a
Command = b
cmd.name = : a
Command = (null)
那么首先 a 应该等于 a 吗?为什么它不在 if 语句中?
【问题讨论】:
-
你测试的是地址是否相同,而不是内容是否相同。使用
strcmp()比较字符串的内容。 -
我不能使用字符串库
-
@user93110 然后编写您自己的类似 strcmp 的函数。无法使用标准库不会使指针比较工作来比较字符串的内容。
-
然后写一个循环比较字符,就像
strcmp一样。 -
我很怀疑你不能使用这个库...