linux c bzero等函数源代码实现



《网络编程》,对bzero等函数的实现颇有兴趣,于是便翻看了其源代码的实现。bzero、bcopy、bcmp等函数源码如下:

bzero源码:

[cpp] view plaincopyprint?
void
bzero(s1, n)
void *s1;
unsigned n;
{
register char *t = s1;

while (n != 0) {
*t++ = 0;
n–;
}
}

bcopy源码如下:
[cpp] view plaincopyprint?
void
bcopy(s1, s2, n)
const void *s1;
void *s2;
unsigned n;
{
register const char *f = s1;
register char *t = s2;

while (n != 0) {
*t++ = *f++;
n–;
}
}

bcmp源码如下:
[cpp] view plaincopyprint?
int
bcmp(b1, b2, length)
const void *b1, *b2;
register size_t length;
{
register char *p1, *p2;

if (length == 0)
return(0);
p1 = (char *)b1;
p2 = (char *)b2;
do
if (*p1++ != *p2++)
break;
while (–length);
return(length);
}