标题是不言自明的,我正在比较两个应该相同但失败的内存块。我不知道测试失败的地方。找出这一点将帮助我调试问题。那么有没有办法准确地找到 memcmp 失败的地方?
问问题
176 次
1 回答
1
你可以使用这个:
void *mymemcmp(const void *ptr1, const void *ptr2, size_t num) {
const unsigned char *s1 = (const unsigned char*)ptr1;
const unsigned char *s2 = (const unsigned char*)ptr2;
for(size_t index = 0; i<num; i++) {
if(*s1 != *s2) return s1;
s1++;
s2++;
}
return NULL;
}
它返回一个指针,指向第一个参数中第一个差异的位置。然后你可以像这样调查它。
void *ao = mymecmp(a, b, n);
ptrdiff_t d = ao-(void*)a;
void *bo = d+(void*)b;
现在,ao
并bo
指出不同之处。
于 2020-12-09T09:38:35.113 回答