出于某种原因,即使变量表显示var相等,这个条件也不会正常传递。
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))
答案 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
}