看《网络编程》,对bzero等函数的实现颇有兴趣,于是便翻看了其源代码的实现。bzero、bcopy、bcmp等函数源码如下:
bzero源码:
void bzero(s1, n) void *s1; unsigned n; { register char *t = s1; while (n != 0) { *t++ = 0; n--; } }
bcopy源码如下:
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源码如下:
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); }
参考网址: http://unix.superglobalmegacorp.com/BSD4.4/newsrc/stand/
http://ftp.cc.uoc.gr/mirrors/OpenBSD/src/sys/lib/libkern/bcmp.c
https://www.delphij.net/fbdoxy/subsys/libkern/html/df/de2/bcmp_8c_source.html
发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/223115.html原文链接:https://javaforall.net
