util_strlcpy.c.svn-base

来自「SumatraPDF是一款小型开源的pdf阅读工具。虽然玲珑小巧(只有800多K」· SVN-BASE 代码 · 共 66 行

SVN-BASE
66
字号
#include <string.h>/* Copy src to string dst of size siz. At most siz-1 characters * will be copied. Always NUL terminates (unless siz == 0). * Returns strlen(src); if retval >= siz, truncation occurred. */int strlcpy(char *dst, const char *src, int siz){	register char *d = dst;	register const char *s = src;	register int n = siz;	/* Copy as many bytes as will fit */	if (n != 0 && --n != 0) {		do {			if ((*d++ = *s++) == 0)				break;		} while (--n != 0);	}	/* Not enough room in dst, add NUL and traverse rest of src */	if (n == 0) {		if (siz != 0)			*d = '\0';		/* NUL-terminate dst */		while (*s++)			;	}	return(s - src - 1);	/* count does not include NUL */}/* Appends src to string dst of size siz (unlike strncat, siz is the * full size of dst, not space left). At most siz-1 characters * will be copied.  Always NUL terminates (unless siz == 0). * Returns strlen(src); if retval >= siz, truncation occurred. */int strlcat(char *dst, const char *src, int siz){	register char *d = dst;	register const char *s = src;	register int n = siz;	int dlen;	/* Find the end of dst and adjust bytes left but don't go past end */	while (*d != '\0' && n-- != 0)		d++;	dlen = d - dst;	n = siz - dlen;	if (n == 0)		return dlen + strlen(s);	while (*s != '\0') {		if (n != 1) {			*d++ = *s;			n--;		}		s++;	}	*d = '\0';	return dlen + (s - src);	/* count does not include NUL */}

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?