任何人都可以向我解释一下,如果我有两个char数组char array1 []和char array2 []来比较这两个数组中的两个字符串, 这是什么意思
if (array1[j] == array2[j-i])
和
if (array2[j-i] == '\0')
我与[j-i] == j和[j-i] ==' \ 0'混淆了一部分。 这可能是一个非常愚蠢的问题,但我对编程很新。 谢谢
答案 0 :(得分:0)
编辑:明确线索的新人(上面的评论)
是。如果你有array1的第i个索引对应于array2的第0个索引。然后,array1的第(i + j)个索引对应于array2的第(0 + j)th =第j个索引。换句话说,如果您在array1中的索引k处,则需要从k中减去i以获得array2中的相应索引。
编辑结束
你是什么意思"这是什么意思"?
为了检查array1是否等于array2,你可以迭代其中一个字符串并检查字符相等性:
int equals(char *array1, char *array2, int length) {
int i;
for(i = 0; i < length; i++) {
//make sure that the char in array1 is equal
//to the char in array2
if(array1[i] != array2[i])
return 0;
//if array1 is done, then you no longer need
//to check (and you know array2 is done too
//from previous if statement)
if(array1[i] == '\0'
break;
}
return 1;
}
请注意,length应该是array1和array2的两个长度中较小的一个,以避免对内存的错误访问。你可能知道会是哪一个,但没有更多的背景,我无法给出更具体的答案。
答案 1 :(得分:0)
这是评论代码,
if (if(array1[i] == array2[0])
// you have 2 arrays of chars and here
// you compare char at position i in array1 to
// char at position 0 in array2
{ for (j = i; ; j++) { if (array2[j-i] == '\0') break;
// if they are identical
// you have a for condition inside the condition strictly
// nothing happens, and it breaks out of the for condition
// when the char in
// array2 is the end of string '\0'