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; 
}

 

posted @ 2017-02-20 09:40  chan0311  阅读(146)  评论(0编辑  收藏  举报