bzero等函數源代碼實現

看《網絡編程》,對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

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章