阅读了前面几篇文章都知道mem系列函数和str系类函数两个主要区别是:mem系类函数不受数据类型限制,但需要指定字节数,而str系列函数指明操作字符串,并且需要null字符结束。
如memcmp和strcmp函数的实现,如下所示
int memcmp(const void *cs, const void *ct, unsigned long count)
{
const unsigned char *su1, *su2;
int res = 0;
for (su1 = cs, su2 = ct; count > 0; ++su1, ++su2, count--) {
if ((res = *su1 - *su2) != 0) {
break;
}
}
return res;
}
int strcmp(const char *cs, const char *ct)
{
signed char __res;
while (1) {
if ((__res = *cs - *ct++) != 0 || !*cs++) {
break;
}
}
return __res;
}