c語言實現strcpy,strcat,strcmp的函數功能

2020-08-12 23:03:34

1.指針法實現strcpy(字串複製的功能)
函數原型:char * strcpy(char *str1,const char *str2)

char * my_strcpy(char *str1,const char *str2)
{
	char *p=str1;
	assert(str1!=NULL && str2!=NULL);//斷言
	while(*p)
	{
		p++;
		str2++;
	}
	return str1;
}

2.指針法實現strcat(字串連線的功能)
函數原型:char *strcat(char *dest, const char *src)

char * my _strcat(char *str1,const char *str2)
{
	char *p=str1;
	assert(str1!=NULL && str2!=NULL);//斷言
	while(*p!='\0')
	{
		p++;
	}
	while(*p==*str2)
	{
		p++;
		str2++;
	}
	return str1;
}

  1. 下標法實現strcmp(字串比較)
    /*
    如果返回值小於 0,則表示 str1 小於 str2
    如果返回值大於 0,則表示 str1 大於 str2
    如果返回值等於 0,則表示 str1 等於 str2
    */
#include <stdio.h> 
#include <string.h>
#include <assert.h>
int my_strcmp(const char *str1,const char *str2)
{
	int  i=0;
	int  max_len=0;
	assert(str1!=NULL && str2!=NULL);
	max_len = strlen(str1)>=strlen(str2) ? strlen(str1) : strlen(str2);
	for(i=0;i<max_len+1;i++)
	{
		if(str1[i]<str2[i])
		{
			return -1;	
		}
		else if(str1[i]>str2[i])
		{
			return 1;	
		}	
	}
	return 0;	
}