#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;
}
1.17封装strcmp,strlen,strcpy,strcat
最新推荐文章于 2025-12-18 17:00:31 发布
本文详细介绍了在C语言中,如何使用自定义的my_strcat、my_strcpy、my_strlen和my_strcmp函数进行字符串拼接、复制、长度计算和比较。通过代码实例展示了这些函数的使用及其对字符串的影响。
2038

被折叠的 条评论
为什么被折叠?



