c语言常用函数实现

memcpy
str1 -- 指向用于存储复制内容的目标数组,类型强制转换为 void* 指针。
str2 -- 指向要复制的数据源,类型强制转换为 void* 指针。
n -- 要被复制的字节数。
返回值
该函数返回一个指向目标存储区 str1 的指针。

void *memcpy(void *str1,void *str2,size_t n)
{
	if(str1==str2||n==0)return str1;
	unsigned char *p1=(unsigned char *)str1;
	const unsigned char*p2=(const unsigned char *)str2;
	for(size_t i=0;i<n;i++)
	{
		*p1++=*p2++;
	}
	return str1;
}

strcpy
char *strcpy(char *dest, const char *src)
参数
dest -- 指向用于存储复制内容的目标数组。
src -- 要复制的字符串。
返回值
该函数返回一个指向最终的目标字符串 dest 的指针。

char *strcpy(char*str1,const char *str2)
{
	char *p=str1;
	while((*str1++=*str2++)!='\0');
	return p;
}

strcat
参数
dest -- 指向目标数组,该数组包含了一个 C 字符串,且足够容纳追加后的字符串。
src -- 指向要追加的字符串,该字符串不会覆盖目标字符串。
返回值
该函数返回一个指向最终的目标字符串 dest 的指针。

char *strcat(char *str1,const char*str2)
{
	char *p=str1;
	while(*str1!='\0')str1++;
	while((*str1++=*str2++)!='\0');
	return p;
}

strlen

size_t strlen(const char *str1)
{
	size_t CNT=0;
	while(*str1!='\0')
	{
		CNT++;
		str1++;
	}
	return CNT;
}

strcmp
参数
str1 -- 要进行比较的第一个字符串。
str2 -- 要进行比较的第二个字符串。
返回值
该函数返回值如下:

如果返回值小于 0,则表示 str1 小于 str2。
如果返回值大于 0,则表示 str1 大于 str2。
如果返回值等于 0,则表示 str1 等于 str2。

int strcmp(const char *str1,const char *str2)
{
	while(*str1==*str2&&*str1!='\0')
	{
		str1++;
		str2++;
	}
	return *str1-*str2; 
}

memset
参数
str -- 指向要填充的内存区域的指针。
c -- 要设置的值,通常是一个无符号字符。
n -- 要被设置为该值的字节数。
返回值
该值返回一个指向存储区 str 的指针。

void *memset(void *mem,int a,size_t n)
{
	unsigned char *p=(unsigned char *)mem;
	for(size_t i=0;i<n;i++)
	{
		*p++=a;
	}
	return mem;
} 
posted @ 2025-04-10 16:28  Osen  阅读(8)  评论(0)    收藏  举报