#include <stdio.h>
int my_strlen(char *a)//计算字符串的长度
{
int k=0;
while(*a!='\0')//直到a字符串的结尾 判定'\0'
{
a++;//没检测到'\0'则一直++
k++;
}
return k;
}
void my_strcpy(char *a,const char *b)//赋值函数 将b赋值到a
{
while(*b!='\0')//直到b字符串的末尾 检测'\0'
{
*a++=*b++;//b的第0位赋值给a的第0位 然后++ 赋值1,2,3..位
}
*a='\0';
}
int my_strcmp(const char *a,const char *b)//判断ab字符串大小
{
int k=0;
while(*a!='\0'||*b!='\0')//当a和b字符串都到达末尾时停止循环
{
if(*a>*b)//a和b的当前位置相比较
{
k=1;
break;//比出大小后立即结束循环
}else if(*a<*b)
{
k=-1;
break;
}else k=0;//当前位置相同则k=0
*a++;//若当前位置相同,++,继续判断下一位
*b++;
}
return k;
}
void my_strcat(char *a,const char *b)//连接函数 b接到a后面
{
while(*a!='\0'){//让 a ,即*a的地址到达字符串末尾
a++;
}
while(*b!='\0')//直到b末尾
{
*a++=*b++;//从a的末尾逐个赋值b
}
}
void my_strstr(const char *a,const char *b)//判断a中是否有b
{
int k=0;
while((*a!='\0')&&(*(b+k)!='\0'))//直到a的末尾结束循环或查找到b的末尾
{
if(*a==*(b+k))//如果当前a的值等于b的值
{
k++;//k的值表示a中有b字符的个数
}else k=0;//当有字符不连续相同时,k=0,从头开始计算k
a++;
}//原理:遍历a中是否有b的第0个字符,若有k=1,检查a的下一个字符
//拿a的下一个字符与b的第1个字符比较,若相同则继续
//出现一个不同则k=0,从头计算,直到a末尾,判定k的值
if(k>0){
printf("有\n");
}else printf("没有\n");
}
int main(int argc, char const *argv[])
{
char arr[100]="";
char brr[100]="";
printf("请输入一条字符串\n");
gets(arr);
printf("请输入另一条字符串\n");
gets(brr);
printf("长度为%d\n",my_strlen(arr));
//my_strcpy(arr,brr);
//printf("%s\n%s\n",arr,brr); //检查其它函数时//掉赋值函数
printf("比大小结果为:%d\n",my_strcmp(arr,brr));
my_strcat(arr,brr);
printf("字符串2加到字符串1后面:%s\n",arr);
my_strstr(arr,brr);
return 0;
}