string库之模拟实现strlen与memset

来源:互联网 发布:云数据库语言 编辑:程序博客网 时间:2024/05/22 03:25

原型:

    C库string.h中的strlen函数

描述:

    C 库函数 size_t strlen(const char *str) 计算字符串 str 的长度,直到空结束字符,但不包括空结束字符。

参数:

    str:要计算长度的字符串。

返回值:

    该函数返回字符串的长度。

模拟实现strlen:

第一种:采用计数器

size_t my_strlen(const char *str){size_t count = 0;assert(NULL != str);while (*str++)++count;return len;}


第二种:通过指针相减计算差值

size_t my_strlen(const char *str){const char *start = str;assert(str);while (*str++);return (str-1-start);}

第三种:利用递归实现

size_t my_strlen(const char *str){assert(str);if (*str)return (1+my_strlen(str+1));return 0;}


原型:

    C库string.h中的memset函数

描述:

    C 库函数 void *memset(void *str, int c, size_t n) 复制字符 c(一个无符号字符)到参数 str 所指向的字符串的前 n 个字符

参数:

    str:指向要填充的内存块。

    c:要被设置的值,该值以int形式传递,但是函数在填充内存块时是使用该值的无符号字符形式。

    n:要被设置为该值的字节数。

返回值:

    该值返回一个指向存储区 str 的指针。

模拟实现memset:

void *my_memset(void *str, int c, size_t n){char *pstr = (char *)str;assert(str);while (n--)*pstr++ = (char)c;return str;}


1 0
原创粉丝点击