#include <stdio.h>
char *_strcpy(char *dest, const char *src)
{
//assert(dest != NULL && src != NULL);
char *p = dest;
while(*src != '\0')
{
*dest++ = *src++;
}
return p;
}
char *_strcat(char *dest, const char *src)
{
//assert(dest != NULL && src != NULL);
char *p = dest;
for(;*dest;dest++);
while(*src != '\0')
{
*dest++ = *src++;
}
return p;
}
int _strlen(const char *str)
{
//assert(str != NULL);
int len = 0;
while(*str != '\0')
{
len++;
str++;
}
return len;
}
int _strcmp(const char *str1, const char *str2)
{
//assert(str1 != NULL && str2 != NULL);
while(*str1 == *str2)
{
if(*str1 == '\0' && *str2 == '\0')
{
return 0;
}
str1++;
str2++;
}
return (*str1 < *str2) ? -1 : 1;
}
//while循环实现_strstr
int _strstr_while(const char *str, const char *substr)
{
char *p1 = str;
char *p2 = substr;
int len1 = _strlen(p1);
int len2 = _strlen(substr);
//assert(str!= NULL && substr != NULL && len1 > len2);
while(len2 <= len1)
{
while(*p1 == *p2)
{
p1++;
p2++;
if(*p2 == '\0')
{
printf("Find!");
return 1;
}
}
str++;
p1 = str;
p2 = substr;
len1 = _strlen(p1);
}
printf("Not find!");
return 0;
}
//for循环实现_strstr
int _strstr_for(const char *str, const char *substr)
{
int len1 = _strlen(str);
int len2 = _strlen(substr);
if(len2 > len1)
{
return 0;
}
int i,j,k;
for(i=0;i<len1;i++)
{
if((len1-i) < len2)
{
printf("Not find!");
return 0;
}
k = i;
for(j=0;j<len2;j++,k++)
{
if(str[k] != substr[j])
{
break;
}
}
if(j == len2)
{
printf("Find!");
return 1;
}
}
}
//KMP实现_strstr
int _strstr3(const char *str, const char *substr)
{
}
/*memcpy和memmove的区别:
1> memcpy需要考虑内存重叠,memmove则不需要考虑;
2> memcpy效率更高,但memmove使用起来更方便;
*/
void *_memcpy(void *dest, const void *src, int n)
{
char *memto = (char *)dest;
char *memfrom = (char *)src;
//assert(memto != NULL && memfrom != NULL);
//assert(memto > memfrom + n || memfrom > memto +n);
while(n > 0)
{
*memto++ = *memfrom++;
n--;
}
return dest;
}
void *_memset(void *buffer,int c,int n)
{
char *p = (char *)buffer;
//assert(p != NULL);
while(n-- > 0)
{
*p++ = (char)c;
}
return buffer;
}
一些字符串及内存操作函数的实现
最新推荐文章于 2023-05-11 18:50:54 发布