词典与未知字节大小比较 - 在​​c

时间:2011-12-07 23:46:25

标签: c

如何对两个未知字节大小的指针进行字典比较, 假设两个数组大小相等, 例如,根据比较实现以下函数返回-1或0或1,并将每个字节转换为ascii

compare(const void *p1, const void *p2, int size)

编辑:我添加了另一个带有要比较的字节大小的参数,我如何将每个字节转换为char并在它们之间进行比较?

2 个答案:

答案 0 :(得分:2)

您可能正在寻找strcmp(3)功能。

<强>更新

如果您的数组不是ASCII字符串并且可能在任何位置包含0x00字节而实际上没有任何意义,那么您将需要Oli指出的长度,因此您可以使用{{3}功能:

int memcmp(const void *s1, const void *s2, size_t n);

更新#2

好的,现在我们已经确定你想要不同的字节,你需要自己的功能。像这样(未经测试):

size_t cmp(const unsigned char *c1, const unsigned char *c2, ssize_t n) {
    ssize_t i;
    for (i=0; i<n; i++) {
        if (c1[i] != c2[i])
            return i;
    }
    -1;
}

这将让您找到不同字节的字节值。如果没有差异,请注意-1返回。这限制了你比较大小完全适合ssize_t的对象,它小于size_t类型 - 但是因为你要比较其中两个,我认为每个对象都有一半的进程地址最重要的是空间。

答案 1 :(得分:0)

你需要一些了解尺寸的方法。明确地(例如,在数据中使用size参数或字段),或隐式地(例如使用空终止符)。