C语言中的字符串函数的实现,strcpy,strlen,strcat,strcmp
strcpy函数实现字符串的拷贝
模拟实现strcpy函数
#include <stdio.h>
#include <assert.h>
char *my_strcpy(char *des,const char *src)
{
char *ret = des;
assert (des!=NULL);
assert (src!=NULL);
while ((*des++)=(*src++))
{
;
}
return ret;
}
int main ()
{
char arr[10] ={0};
char *p = "abcdef";
char *ret = my_strcpy(arr,p);
printf ("%s\n",ret);
return 0;
}
strlen函数可以计算出字符串的长度
int my_strlen(const char *src)
{
int count = 0; assert(src);
while ((*src++))
{
count ++;
}
return count;
}
int main ()
{
char *p="abcdef";
int ret = my_strlen(p);
printf ("%d\n",ret);
return 0;
}
模拟实现strlen函数
strcat函数可以把一个字符串追加到另一个字符串中
模拟实现字符串的追加strcat
char *my_strcat(char *des,const char *src)
{
char *ret = des;
assert(des);
assert(src);
while (*des)
{
des++;
}
while ((*des++)=(*src++))
{
;
}
return ret;
}
int main ()
{
char arr[20] = "hello ";
char *p = "world!";
char *ret = my_strcat(arr,p);
printf ("%s\n",ret);
return 0;
}
strcmp函数可以比较两个字符串的大小
//模拟实现字符串的比较函数strcmp
int my_strcmp(const char *des,const char *src)
{ assert (des);
assert(src);
while ((*src)||(*des))
{
if (*des>*src)
{
return 1;
break;
}
else if (*des<*src)
{
return -1;
break;
}
else if (*des==*src)
{
des++; src++;
}
}
return 0;
}
int main ()
{
char *p = "cdefdf";
char *q ="cdef";
int ret = my_strcmp(p,q);
if (ret==1)
{
printf ("较大的字符串是:%s\n",p);
}
else if (ret==-1)
{
printf ("较大的字符串是:%s\n",q);
}
else if (ret==0)
{
printf ("两个字符串相等\n");
}
return 0;
}