条件不符合c

时间:2016-11-24 22:44:56

标签: c arrays if-statement conditional-statements

出于某种原因,即使变量表显示var相等,这个条件也不会正常传递。enter image description here

    if(arr[r1][1] != NULL) {
        t_plat = arr[r1][1];
        t_ver = arr[r1][2];


if((arr[r2][1] == t_plat) && (arr[r2][2] == t_ver))

2 个答案:

答案 0 :(得分:1)

正如您从屏幕截图中看到的那样,对象arr[r2][1]存储了值0xb01a70,而对象t_plat存储了值0xb01770

因此,如果您比较存储在这些对象中的值,如

if((arr[r2][1] == t_plat) )

你会毫不怀疑地得到false。这些价值彼此不相等。

这些价​​值观是什么?它们是指向字符串的第一个字符的指针。如果要比较指针所指向的字符串,则必须使用标题strcmp中声明的标准C函数<string.h>

因此你应该写

if( strcmp( arr[r2][1], t_plat ) == 0 && strcmp( arr[r2][2], t_ver ) == 0 )

答案 1 :(得分:0)

你不能像在任何其他语言中那样比较C中的字符串,因为在C中,字符串是指针

所以你不是要比较值,而是比较不相同的字符串的地址。

要检查两个字符串是否相等,请使用strcasecmp中的strcmp<string.h>函数。

示例:

if (strcmp(arr[r2][1], t_pat) == 0) {
    // arr[r2][1] and t_pat are equal by value
}