模拟实现strncpy
1.strncpy,是编程语言中的一个函数,它的功能是将字符串src中最多n个字符复制到字符数组dest中(它并不像strcpy一样只有遇到NULL才停止复制,而是多了一个条件停止,就是说如果复制到第n个字符还未遇到NULL,也一样停止),返回指向dest的指针。
#include<stdio.h>
char* my_strncpy(char* dest,const char* src,int count)
{
char* ret = dest;
while(count && (*dest++ = *src++))
{
count--;
}
if(count)//如果拷贝的个数小于字符串的个数用0补齐
while(--count)
*dest = '\0';
return ret;
}
int main()
{
char arr[20] = "abcdefghi";
printf("%s",my_strncpy(arr,"hello",3));
return 0;
}
模拟实现strcat
2.把src所指字符串的前n个字符添加到dest结尾处(覆盖dest结尾处的’\0’)并添加’\0’。
#include<stdio.h>
char* my_strncat(char* dest,char* src,int count)
{
char* ret = dest;
while(*dest != '\0')
{
*dest++;
}
while(count--&&(*dest++ = *src++))
{
;
}
return ret;
}
int main()
{
char arr[20] = "hello ";
my_strncat(arr,"world 555",5);
printf("%s",arr);
return 0;
}
模拟实现strcmp
3.strncmp是一个函数名,这个函数用来比较s1和s2字符串,这个函数将返回一个值
#include<stdio.h>
#include<assert.h>
int my_strncmp(const char* dest,const char* src,int count)
{
assert(dest);
assert(src);
while(count--&&(*dest == *src))
if(*dest == '\0')
{
return 0;
}
return *dest-*src;
}
int main()
{
char arr1[20] = "aaahello";
char arr2[20] = "aaaworld";
printf("%d\n",my_strncmp(arr1,arr2,3));
return 0;
}
605

被折叠的 条评论
为什么被折叠?



