#include<stdio.h>
#include<stdlib.h>
#include<string.h>
int my_strlen(char *str)//指针减指针求长度
{
char *p=str;
while(*p)
{
p++;
}
return p-str;
}
int my_strlen1(char *str)//求字符个数,有第三变量
{
int count = 0;
while(*str++)
{
count++;
}
return count;
}
int my_strlen2(char *str)//递归思想求字符个数
{
if('\0'==*str)
{
return 0;
}
else
{
return 1+my_strlen2(++str);
}
}
char *my_strcpy(char *d,const char *src)//字符串拷贝
{
char *ret;
if((NULL==d)&&(NULL==src))
{
exit(0);
}
else
{
ret=d; // 保存指针
while((*d++ = *src++)!='\0')//依次移动,把'\0'也复制过去了,此时产生
{
NULL;
}
}
return ret;
}
char *my_strcat(char *d,const char *str )
{
char *ret=d;//把字符串的首地址存储在while(*d)//循环结束时d指向'\0'
while(*d)
{
d++;
}
while(*d++=*str++)//从d所指的'\0'开始赋值,直到把str所指的'\0'也赋进去
{
NULL;
}
return ret;
}
int main( void )
{
printf("亲,以下是原字符串输出结果:\n");
char string[20]="0000000000000";//13个字符和一个'\0',VC6.0,vs2013里超过19个字符就报错溢出,CodeBlock里不报错
printf("String=%s\n",string);
printf("亲,以下是两种求字符串长度的函数输出结果:\n");
printf("length=%d\n",my_strlen1(string));
printf("length=%d\n",my_strlen2(string));
printf("亲,以下是字符串拷贝函数输出结果:\n");
printf( "String = %s\n", my_strcpy( string, "Hello world" ) );//此时string[12]='\0',string[13]='0'
printf("亲,以下是两种求新字符串长度的函数输出结果:\n");
printf("length=%d\n",my_strlen1(string));
printf("length=%d\n",my_strlen2(string));
printf("亲,以下是字符串连接拷贝函数输出结果:\n");
printf("String = %s\n", my_strcat( string, "Hello bit" ));
/* //用户输入型
char str1[20];
char str2[]="Hello word";
printf ("亲,请输入一个字符串:\n"); gets(str1); // 必须初始化
my_strcat(str1,str2);//my_strcat(str,"hello word")
puts(str2); puts(str1);*/
return 0;
}
浅谈 strlen() strcpy() strcat() 自己实现代码
最新推荐文章于 2023-10-08 20:35:32 发布