11

我有两个变量:

char charTime[] = "TIME";
char buf[] = "SOMETHINGELSE";

我想检查这两个是否相等......使用charTime == buf不起作用。

我应该使用什么,有人可以解释为什么使用==不起作用吗?

这个动作在 C 和 C++ 中会有所不同吗?

4

5 回答 5

24
char charTime[] = "TIME"; char buf[] = "SOMETHINGELSE";

C++C(删除std::C):

bool equal = (std::strcmp(charTime, buf) == 0);

但真正的 C++ 方式:

std::string charTime = "TIME", buf = "SOMETHINGELSE";
bool equal = (charTime == buf);

using==不起作用,因为它试图比较每个数组的第一个字符的地址(显然,它们不相等)。它不会比较两个数组的内容。

于 2010-03-13T23:13:13.060 回答
2

在 c 中,您可以使用 string.h 中的 strcmp 函数,如果它们相等,则返回 0

#include <string.h>

if( !strcmp( charTime, buf ))
于 2010-03-13T23:13:21.920 回答
1

==在使用数组名称的表达式中,char衰减为char*指向各自数组的开头。然后根据指针本身的值而不是数组的实际内容执行比较。

==只会对指向相同位置的两个指针返回 true,否则返回 false,即使它们指向具有相同内容的两个数组。

您需要的是标准库函数strcmp。如果数组包含相同的内容(直到两个数组 fro 中必须存在的终止空字符才能strcmp安全工作),则此表达式的计算结果为真。

strcmp(charTime, buf) == 0
于 2010-03-13T23:16:10.137 回答
0

在 for 循环中检查它们。一旦它们改变它们不相等,获取每个字符的 ASCII 数字。

于 2010-03-13T23:11:45.247 回答
0

您正在检查身份charTimebuf. 要检查相等性,请遍历一个数组中的每个字符,并将它们与另一个数组中的相关字符进行比较。

于 2010-03-13T23:13:55.897 回答