#include<stdio.h>
#include<string.h>
void print_menu()// 定义菜单函数
{
printf("\t\t==1、实现strlen功能==\n");
printf("\t\t==2、实现strcpy功能==\n");
printf("\t\t==3、实现strcmp功能==\n");
printf("\t\t==4、实现strcat功能==\n");
printf("\t\t==5、实现求src字符串中是否包含子串dest字符串==\n");
printf("\t\t======0、退出======\n");
}
int my_strlen(char *arr)
{
int n=0;
for(int i=0;*(arr+i)!='\0';i++)
{
n++;
}
return n;
}
char *my_strcpy(char *ptr,const char *a)
{
char *p=ptr;
while(*a !='0')
{
*p++ = *a++;
}
*p = '\0';
return ptr;
}
int my_strcmp(const char *arr,const char *brr)
{
while(*arr&&(*arr == *brr)){
arr++;
brr++;
}
return *(unsigned char *)arr-*(unsigned char *)brr;
}
void my_strcat(char* a,char *b)
{
int m=strlen(a);
int n =strlen(b);
for(int i=m;i<m+n;i++)
{
*(a+i)=*(b+i-m);
}
}
int main(int argc,const char argv[])
{
int menu=0;
while(1)
{
print_menu();//调用菜单函数
printf("请输入>>>");
scanf("%d",&menu);
getchar();
switch(menu)//分支
{
case 1:
{
char arr[100]={0};
printf("请输入字符串");
gets(arr);
printf("%d\n",my_strlen(arr));
break;
}
case 2:
{
char arr[30]={0};
char brr[30]={0};
printf("请输入字符串:");
gets(brr);
my_strcpy(arr,brr);
printf("arr的值为:");
printf("%s\n",arr);
break;
}
case 3:
{
char arr[100]= {0};
char brr[100] ={0};
printf("请输入第1个字符串:");
gets(arr);
printf("请输入第2个字符串:");
gets(brr);
int a=my_strcmp(arr,brr);
if(a<0)
{
printf("第二个更大\n");
}
else if(a>0)
{
printf("第一个更大\n");
}
else{
printf("一样大\n");
}
break;
}
case 4:
{
char a[100]={0};
char b[100]={0};
printf("输入第一个字符串:");
gets(a);
printf("输入第二个字符串:");
gets(b);
my_strcat(a,b);
printf("%s\n",a);
break ;
}
case 0: goto END;
default:printf("输入的功能有误,请重新输入\n");
}
}
END:
return 0;
}
2.写出四个函数族(strlen、strcpy、strcmp、strcat)