我试图在比较函数中从数组内存中取出数据。令我惊讶的是,它成功了......而我认为应该是内存错误。有人能看一下并给予我一个答案吗?
#include <stdio.h>
int string_compare(const char* w1, const char* w2, unsigned int len){
for(int i = 0; i < len; i++){
if(w1[i] != w2[i]){
return 0;
}
}
return 1;
}
int main(){
printf("%d\n",string_compare("Hello'\0' world!", "Hello",10));
}
1条答案
按热度按时间2vuwiymt1#
它工作,而我认为应该有一个内存错误。
没有内存错误。
比较在索引处停止,因为
w1[5] != w2[5]
为true。w1[5]
是'
,而不是 * 空字符 *。也许OP想比较
"Hello\0 world!", "Hello"
?现在
index
6会有麻烦,它超出了"Hello"
,会导致未定义的行为。“它工作”,可能发生,可能失败,这是UB。当检测到字符差异或 * 空字符 * 时,正确的字符串比较将停止。