1> 自定义函数(my_strlen)实现strlen函数的功能
#include<stdio.h>
int my_strlen(char *arr) //自定义求长度的函数
{
int n=0; //计数的变量初始化为0
while(*arr!='\0')
{
*arr++; //代码执行条件,当元素不为空时计数加一,arr指向后一位
n++;
}
return n; //返回值
}
int main(int argc, const char *argv[])
{
char arr[20] = "0"; //定义一个一维字符数组
printf("请输入一个一维数组:");
gets(arr);
int m=my_strlen(arr);
printf("该数组的长度为:%d\n",m);
}
2> 自定义函数(my_strcpy)实现strcpy函数的功能
#include<stdio.h>
void my_strcpy(char *arr,char *dest) //定义函数
{
while(*arr!='\0') //当元素不为空时循环
{
*dest++ = *arr; //将当前元素的值按顺序赋值给dest数组,之后dest偏移一位
arr++; //自加
}
*dest ='\0';
}
int main()
{
char arr[20];
char dest[20];
printf("请输入一个字符串:\n");
gets(arr);
my_strcpy(arr,dest);
printf("dest字符串为:%s\n",dest);
return 0;
}
3> 自定义函数(my_strcmp)实现strcmo函数的功能
#include<stdio.h>
int my_strcmp(char *arr,char*brr)
{
while(*arr!='\0'&&*brr!='\0')
{
if(*arr<*brr)
{
printf("第二个数组较大\n");
goto END;
}
else if(*arr==*brr)
{
*arr++;
*brr++;}
else if(*arr>*brr)
{
printf("第一个数组较大\n");
goto END;
}
}
printf("一样大\n");
END:;
}
int main(int argc, const char *argv[])
{
char arr[20] = "0";//定义一个一维数组
char brr[20] = "0";
printf("请输入一个一维数组:");
gets(arr);
printf("请输入第二个一维数组:");
gets(brr);
my_strcmp(arr,brr);
}
4> 自定义函数(my_strcat)实现strcat函数的功能
#include<stdio.h>
#include<string.h>
void my_strcat(char *p,const char *q)
{
int n=strlen(p);
int m=strlen(q);
for (int i = 0; i < m; i++)
{
p[n+i]=q[i];
}
}
int main()
{
char arr[50]="",brr[50]="";
char *p=arr,*q=brr;
printf("请输入第一个字符串");
scanf("%s",p);
getchar();
printf("请输入第二个字符串");
scanf("%s",q);
getchar();
my_strcat(p,q);
printf("连接后的字符串为%s\n",p);
return 0;
}
4> 自定义函数(my_strstr)实现求src字符串中是否包含子串dest字符串
#include<string.h>
#include<stdio.h>
void my_strstr(const char *p,const char *q)
{
int n=strlen(q),m=strlen(p),x=0;
if (m>n)
{
for (int i = 0; i < m; i++)
{
if (q[x]==p[i])
{
x++;
if (x==n)
{
break;
}
}
else
{
if (x!=0)
{
x=0;
i-=1;
}
else
{
x=0;
}
}
}
}
if (x==n)
{
printf("第二个是子串\n");
}
else
{
printf("不是\n");
}
}
int main()
{
char arr[50]="",brr[50]="";
char *p=arr,*q=brr;
printf("请输入第一个字符串");
scanf("%s",p);
getchar();
printf("请输入第二个字符串");
scanf("%s",q);
getchar();
my_strstr(p,q);
return 0;
}