#include <stdio.h>
#include <string.h>
#include <stdlib.h>
int mystrlen(char *p)
{int i,count=0;
for(i=0;;i++)
{
if(*p++=='\0')
{
break;
}
count++;
}
return count;
}
int main(int argc, const char *argv[])
{
char a[20];
gets(a);
char *p=a;
int k= mystrlen(p);
printf("字符串的长度是%d\n",k);
return 0;
}
自定义mystrlen函数
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
char *mystrcat(char *p1,char *p2)
{
char *pp=p1;//将p1赋值给pp
while(*pp!='\0')
{
pp++;
}
//用循环将pp移动至'\0'处
while(*p2!='\0')
{
*pp=*p2;//在pp的'\0'处赋上p2的值
pp++;
p2++;
}//实现连接
*pp='\0';//在pp的末尾加上'\0'
return p1;
}
int main(int argc, const char *argv[])
{
char str1[100]="12345";
char str2[100]="6789";
char *s=mystrcat(str1,str2);
printf("%s\n",s);
return 0;
}
自定义mystrcat函数
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
char *mystrcpy(char *p1,char *p2)
{
char *pp=p1;
//先保留p1指向的字符串首地址
while(*p2!='\0')
{
*pp=*p2;
//将p2中的值赋给pp中的值
pp++;
p2++;
}
*pp='\0';
//加上'\0'不显示后面的字符
return p1;
}
int main(int argc, const char *argv[])
{
char str1[100]="abcdefg";
char str2[100]="xxq";
char *s=mystrcpy(str1,str2);
//将str2的内容拷贝给str1并返回str1
printf("拷贝之后的结果:%s\n",s);
return 0;
}
自定义mystrcpy函数
include <stdio.h>
#include <string.h>
#include <stdlib.h>
int mystrcmp(char str1[],char str2[])
{
int i=0;
while(str1[i]!='\0'&&str2[i]!='\0')
{//字符串1和字符串2依次比较
//字符串1和字符串2碰到'\0'停止
if(str1[i]>str2[i])
{
return 1;
}
if(str1[i]<str2[i])
{
return -1;
}
i++;
//最后一次i++导致字符串1和字符串2
//任意一个最后一位是'\0'时出循环
}
//如果能比较位都相等,检查最后一位是否是'\0'来决定大小
if(str1[i]=='\0'&&str2[i]=='\0')
{
return 0;
}
else if(str1[i]=='\0'&&str2[i]!='\0')
{
return -1;
}
else if(str2[i]=='\0'&&str1[i]!='\0')
{
return 1;
}
}
int main(int argc, const char *argv[])
{
char str1[100];
printf("请输入字符数组1:");
gets(str1);
char str2[100];
printf("请输入字符数组2:");
gets(str2);
int s=mystrcmp(str1,str2);
printf("%d\n",s);
return 0;
}
自定义mystrcmp函数