1.模拟实现strncpy
char *my_strncpy(char *dest, const char*src,int count)
{
char*p = dest;
assert(dest != NULL);
assert(src != NULL);
while(count--)
{
*dest = *src;
dest++;
src++;
}
return p;
}
int main()
{
char arr1[20] = "abcdefg";
char arr2[] = "higklmn";
int n = 0;
printf("请输入数字\n");
scanf("%d",&n);
printf("%s\n",my_strncpy(arr1,arr4,n));
return 0;
}
2.模拟实现strncat
char *my_strncat(char *dest, const char *src ,int count)
{
char *p = dest;
assert(dest != NULL);
assert(src != NULL);
while(*dest)
dest++;
while(count--)
{
*dest = *src;
dest++;
src++;
}
return p;
}
int main()
{
char arr1[20] = "abcdefg";
char arr2[] = "opqrstu";
int n = 0;
printf("请输入数字\n");
scanf("%d",&n);
printf("%s\n",my_strncat(arr1,arr2,n));
return 0;
}
3.模拟实现strncmp
int my_strncmp( const char *src,const char *dst ,size_t count)
{
assert(dst != NULL);
assert(src != NULL);
while(*src != '\0' && *dst != '\0' && count)
{
if(*src-*dst>0)
return *src-*dst;
if(*src-*dst<0)
return *src-*dst;
src++;
dst++;
count--;
}
if(*src=='\0'&&*dst!='\0')//谁先为'\0',谁就小
return *src-*dst;
if(*src=='\0'&&*dst!='\0')
return *src-*dst;
return 0;
}
int main()
{
char arr1[] = "abcdefg";
char arr2[] = "higklmn";
int n = 0;
printf("请输入数字\n");
scanf("%d",&n);
printf("%d\n",my_strncmp(arr1,arr2,n));
return 0;
}