模拟实现【strncpy】
char *my_strncpy(char* dest,char *src,size_t count)
{
char *ret = dest;
assert(dest);
assert(src);
while(count)
{
*dest++ = *src++;
count--;
}
return ret;
}
int main()
{
char arr1[20] = {0};
char arr2[] = "abcdefg";
printf("%s\n",my_strncpy(arr1,arr2,5));
system("pause");
return 0;
}
模拟实现 【strncat】
char *my_strncat(char*dest, char *src,size_t count)
{
char *tmp = dest;
int i =0;
assert(dest!= NULL);
assert(src != NULL);
while(*dest) //当dest = '\0'时,跳出while循环,因为实在'\0'后面追加。
{
dest++;
}
for(i=0;i<count;i++)//循环count次,追加count个字符。
{
*dest++ = *src++;
}
return tmp;
}
int main()
{
char arr[20] = "hello ";//必须有足够大的空间
printf("%s\n",my_strncat(arr,"worlddd",5));
system("pause");
return 0;
}
模拟实现【strncmp】
int *my_strncmp(const char*str1,const char *str2,size_t num)
{
assert(str1!= NULL);
assert(str2!= NULL);
while (*str1 == *str2 && num)
{
if (str1 == '\0')
{
return 0;
}
str1++;
str2++;
num--;
}
return *str1 - *str2;
}
int main()
{
char str1[] = "abcdefgi";
char str2[] = "abcdefhk";
printf("%d",my_strncmp(str1,str2,3));
system("pause");
return 0;
}