首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > 编程 >

strlcpy兑现

2012-11-05 
strlcpy实现#include stdio.h/* * Copy src to string dst of size siz.At most siz-1 characters * wil

strlcpy实现

#include <stdio.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 size_t 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 */}int main(){    char buf[5];    char *s[] = {"abc", "abcd", "abcde", "abcdef"};    int i, len, size = sizeof(buf);    for (i = 0; i < 5; i++) {        buf[i] = '#';    }    printf("size = %d\n", size);    for (i = 0; i < 4; i++) {        len = strlcpy(buf, s[i], size);        printf("src = %s, len = %d, buf = %s", s[i], len, buf);        if (size <= len) {            printf(", truncation occurred\n");        } else {            printf("\n");        }    }    return 0;}
?

热点排行