C语言——常用库函数
memcmp
int my_memcmp(char* str1,char* str2,int num)
{
while(num--)
{
if(*str1>*str2)
{
return 1;
}
else if(*str1<*str2)
{
return -1;
}
else
{
str1++;
str2++;
}
}
return 0;
}
memcpy
void* my_memcpy(void *str1,void *str2,int size)
{
int *p1=str1;
int *p2=str2;
int i=0;
for(i=0;i<size;i++)
{
p1[i]=p2[i];
}
return str1;
}
memset
void my_memset(char* str,int data,int size)
{
char *p=str;
int i=0;
for(i=0;i<size;i++)
{
p[i]=data;
}
}
strcat
char* my_strcat(char* src,char* des)
{
assert(src!=NULL&&des!=NULL);
char *bak=src;
while(*src!='\0')
{
*src++;
}
while(*des!='\0')
{
*src++=*des++;
}
*src='\0';
return bak;
}
strcmp
int my_strcmp(char* str1,char* str2)
{
assert(str1!=NULL&&str2!=NULL);
while(*str1!='\0'&&*str2!='\0'&&*str1==*str2)
{
str1++;
str2++;
}
if(*str1>*str2) return 1;
if(*str1<*str2) return -1;
return 0;
}
strcpy
char* my_strcpy(char* src,char* des)
{
assert(src!=NULL&&des!=NULL);
char* bak=src;
while(*des!='\0')
{
*src++=*des++;
}
*src='\0';
return bak;
}
strlen
int my_strlen(char *str)
{
int len=0;
assert(str!=NULL);
while(*str!='\0')
{
len++;
str++;
}
return len;
}
strstr
char* my_strstr(char* str1,char* str2)
{
int len1=strlen(str1);
int len2=strlen(str2);
int i=0;
int j=0;
if(len1<len2)
{
return NULL;
}
for(i=0;i<len1;i++)
{
for(j=0;j<len2;j++)
{
if(*(str1+i+j)!=*(str2+j))
{
break;
}
}
if(j==len2)
{
return (char*)(str1+i);
}
}
return NULL;
}
strncat
char* myStrncat(char* src,char* des,int count)
{
assert(src!=NULL&&des!=NULL);
char* bak=src;
while(*src!='\0')
{
*src++;
}
while(*des!='\0'&&count>0)
{
*src++=*des++;
count--;
}
*src='\0';
return bak;
}
strncmp
int myStrncmp(char* str1,char* str2,int count)
{
int ret=0;
assert(str1!=NULL&&str2!=NULL);
while(*str1!='\0'&&*str2!='\0'&&*str1==*str2&&count>0)
{
str1++;
str2++;
count--;
}
ret=*str1-*str2;
if(ret>0)
{
return 1;
}
else if(ret<0)
{
return -1;
}
return 0;
}
strncpy
char* myStrncpy(char* src,char* des,int count)
{
assert(src!=0&&des!=NULL);
char* bak=src;
while(*des!='\0'&&count>0)
{
*src++=*des++;
count--;
}
*src='\0';
return bak;
}