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

浙公网安备 33010602011771号