以下函数的头文件位于#include<string.h>
1.strcat函数:
函数原型:char * strcat ( char * destination, const char * source );
该函数是字符串拼接函数。将源字符串拼接至目标字符串的结尾处。要覆盖目标字符串中的'\0'。
source和destination的空间不能重叠,而且destination的空间一定要能够容纳destination和source,否则在进行指针++的时候就会出错。
模拟实现:
char* mystrcat(char* dest,const char* src)
{
char* p = dest;
assert(dest && src);
//找dest的结尾处,最终指向'\0'
while(*dest != '\0')
dest++;
while(*src != '\0')
*dest++ = *src++;
*dest = '\0';
return p;
}
int main()
{
//目标串中的空间一定要开够,否则指针++会出错
char str1[30] = "hello";
char* str2 = " world";
char* ret = mystrcat(str1,str2);
printf("%s\n",ret);
return 0;
}
2.strncat函数:
函数原型:char * strncat ( char * destination, const char * source, size_t num );
该函数实现规定长度的字符串的拼接。和strcat不同之处在于,需要加一个循环,循环次数为len次。
//strncat
char* mystrncat(char* dest,const char* src,int len)
{
char* p = dest;
assert(dest);
assert(src);
while(*dest)
dest++;
while(len--)
{
*dest = *src;
dest++;
src++;
}
*dest = '\0';
return p;
}
int main()
{
char str1[30] = "hello ";
char str2[] = "the beautiful";
char* ret = mystrncat(str1,str2,3);
printf("%s\n",ret);
return 0;
}
3.memchar函数:
函数原型:
const void * memchr ( const void * ptr, int value, size_t num );
void * memchr ( void * ptr, int value, size_t num );
该函数是规定的范围内查找一个值,返回这个值的位置。
模拟实现:
//memchr
void* mymemchr(const void* str,int value,size_t n)
{
char* p = (char*)str;
assert(str);
while(n--)
{
if((char)value == *p)
return p;
else
++p;
}
return NULL;
}
int main()
{
char* p;
char str1[] = "maybe is you!";
p = mymemchr((void*)str1,'i',sizeof(str1));
printf("value is %c, position is %d\n",*p,p-str1+1);
return 0;
}
3.memcpy函数:
函数原型:
void * memcpy ( void * destination,