1.17封装strcmp,strlen,strcpy,strcat

本文详细介绍了在C语言中,如何使用自定义的my_strcat、my_strcpy、my_strlen和my_strcmp函数进行字符串拼接、复制、长度计算和比较。通过代码实例展示了这些函数的使用及其对字符串的影响。
#include  <stdio.h>
#include  <string.h>
void my_strcat(char *a,char *b);//拼接函数
void my_strcpy(char *a,char *b);//复制函数
int my_strlen(char *a);//字符串长度
int my_strcmp(char *a,char *b);//比较大小

int main(int argc,const char * argv[])
{
    char a[20]={"hello"};
    char b[20]={"world"};
    void (*c[2])(char*,char*)={my_strcat,my_strcpy};//定义一个函数指针数组返回类型为void;传参为(char*,char*);
    int (*d1[1])(char*)={my_strlen};
     int (*d2[1])(char*,char *)={my_strcmp};
    c[0](a,b);
    printf("%s\n",a);
     c[1](a,b);//my_strcpy函数执行后a[20]={"world"};被覆盖掉了
    int len1= d1[0](a);
    int ma2= d2[0](a,b);
    printf("%s,%s,%d,%d",a,a,len1,ma2); //1是因为cpy函数"helloworld"变成了"hello\0orld",虽然不打印"orld"但确实存在;
    return 0;
}
void my_strcat(char *a,char *b)
{   int i=0,j=0;
    while (*(a+i)!='\0')
    {
        i++;
    }
    while(*(b+j)!='\0')
    {
        *(a+i+j)=*(b+j);
        j++;
    }
    *(a+i+j)='\0';    
}
void my_strcpy(char *a,char *b)
{   int i=0;
    while (*(b+i)!='\0')
    {
        *(a+i)=*(b+i);
        i++;
    }
    *(a+i)='\0';    
}
int my_strlen(char *a)
{   int i=0;
    while (*(a+i)!='\0')
    {
        i++;
    }
     return i;
}
int my_strcmp(char *a,char *b)
{   int ret=0;
    while (!(ret=*(unsigned char*)a-*(unsigned char*)b&&*a))
    {
        a++;
        b++;
    }
    if(ret>0)
    {
        return 1;
        }
    if(ret<0)
    {
        return -1;
    }
    
    return 0;
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值