字符数组操作

时间:2015-10-14 03:08:46

标签: c arrays string

任何人都可以向我解释一下,如果我有两个char数组char array1 []和char array2 []来比较这两个数组中的两个字符串, 这是什么意思

if (array1[j] == array2[j-i])

if (array2[j-i] == '\0')

我与[j-i] == j和[j-i] ==' \ 0'混淆了一部分。 这可能是一个非常愚蠢的问题,但我对编程很新。 谢谢

2 个答案:

答案 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'