C中对strlen,strcpy,strcat模拟实现

strlen

对于strlen的模拟实现:

size_t strlen ( const char * str );
strlen的使用:
    字符串以 '\0' 作为结束标志,strlen函数返回的是在字符串中 '\0' 前⾯出现的字符个数(不包
'\0' )。
    参数指向的字符串必须要以 '\0' 结束。
     注意函数的返回值为size_t,是⽆符号的( 易错 )。
int my_strlen ( char *str)
{
assert(str);                       //判断指针 str 的有效性
int cost=0;                   //定义一个int类型的cost变量来记录字符的个数
while (*str != ‘\ 0 ’ )             //使用while循环,判断条件为*str!=‘\0’;
{
cost++;                       //当*str不为‘\0’时,cost++
str++;                              //指针指向下一个位置
}                   
return  cost;                   //返回cost(字符的个数)
}

strcpy

对于strcpy的模拟实现:

char * strcpy ( char * destination, const char * source );
strcpy的使用:
    • 源字符串必须以 '\0' 结束。
    • 会将源字符串中的 '\0' 拷⻉到⽬标空间。
    • ⽬标空间必须⾜够⼤,以确保能存放源字符串。
    • ⽬标空间必须可变。
char * my_strcpy ( char *dest, const char *src)
{
char *ret = dest;                             //创建一个指针指向dest
assert(dest != NULL );                    //判断dest的有效性
assert(src != NULL );                      //判断src的有效性
while ((*dest++ = *src++))              //while循环与判断条件
{                                                     //使*dest==*src;然后指针同时指向下一个位置
;                                                     //当src==\0 时,退出循环。
}
return ret;                                      //返回ret指针
}

strcat

对于strcat的模拟实现:

char  * strcat ( char *dest, const char *src);
    • 源字符串必须以 '\0' 结束。
    • ⽬标字符串中也得有 \0 ,否则没办法知道追加从哪⾥开始。
    • ⽬标空间必须有⾜够的⼤,能容纳下源字符串的内容。
    • ⽬标空间必须可修改。
char * my_strcat ( char *dest, const char *src)
{
char *ret = dest;                            //创建一个指针指向dest
assert(dest != NULL );                   //判断dest的有效性
assert(src != NULL );                     //判断src的有效性
while (*dest)                                  //使用循环使*dest指向字符串的末尾‘\0’
{
dest++;
}
while ((*dest++ = *src++))              //while循环与判断条件
{                                                    //使*dest==*src;然后指针同时指向下一个位置
;
}
return ret;                                      //返回ret指针
}
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值