功能:设置字符串前n个字符为v
输入:字符串数组或指针、要改为的字符、改多少个
输出:更改后的字符串指针
说明:
void *_memset(const void *s, char v, size_t n)
{
char *ptmp = s;
if (n > strlen(s))
return NULL;
while (n--)
{
*ptmp = v;
ptmp++;
}
return s;
}
函数:memchr
功能:在字符串的前n个字符中寻找c,找到返回指向这个字符的指针
输入:字符串数组或指针、要寻找的字符、前多少个
输出:匹配的字符指针
说明:
void * _memchr(const void * buf, char c , size_t n)
{
const unsigned char *p = buf;
int len = strlen(buf);
while ((n-- != 0 ) && (len--!= 1))
{
if ((unsigned char)c == *p++)
{
return (void *)(p-1);
}
}
return NULL;
}
功能:比较两个字符串前n个字符是否相同
输入:两个字符串数组或指针
输出:相同返回0,前面的大返回1,后面的大返回-1
说明:
int _memcmp(const void *str1, const void *str2, size_t n){
const char *buf1, *buf2;
buf1 = str1;
buf2 = str2;
if (n == 0 && n > strlen(str1) && n > strlen(str2))
{
printf("The n is not right number!\n");
return 2;
}
while (n--)
{
if(*buf1 == *buf2)
{
if (n == 0)
return 0;
}
else if ((*buf1) > (*buf2))
return 1;
else if (*buf1 < *buf2)
return -1;
buf1++;
buf2++;
}
}
函数:memcpy
功能:把字符串str2中的前n个字符拷贝到str1中
输入:两个字符串数组或指针
输出:返回修改后的字符串指针
说明:
void *_memcpy(char *str1, const char *str2, size_t n){
char *buf1 = str1;
const char *buf2 = str2;
int len;
len = strlen(str2);
if(n == 0 && n > len)
return NULL;
while (n--)
{
*buf1 = *buf2;
buf1++;
buf2++;
}
return str1;
}
函数:_strrev
功能:字符串的反转
输入:字符串数组或指针
输出:返回修改后的字符串指针
说明:
char * _strrev(char *str)
{
char *head = str;
char *tail = str;
char ptmp;
int len = strlen(str);
while (--len)
{
tail++;
}
while (head < tail)
{
ptmp = *head;
*head = *tail;
*tail = ptmp;
head++;
tail--;
}
return str;
}