strncpy
char * strncpy ( char * destination, const char * source, size_t num );

 

拷贝num个字符从源字符串到目标字符串,如果源字符串的长度小于num,则拷贝完字符串后,在目标函数的后面加0,直到num个

因此,我们可以设置一个num用作拷贝字符串的长度,用类似strcpy的方式(在上一章)进行模拟实现

点击查看代码
char* my_strncpy(char*dest,const char*source,int num)
{
  char*tmp=dest;
  while(num&&(*dest=*source))
  {
    num--;
    dest++;
    source++;
  }
  while(num)
  {
    num--;
    *dest++='\0';
  }
  return tmp;
}
int main()
{
  int num;
  char arr1[30]="I  love you";
  char arr2[]="wpf";
  scanf("%d",&num);
  my_strncpy(arr1,arr2,num);
  printf("%s\n",arr1);
  return 0;
}
strncat
char * strncat ( char * destination, const char * source, size_t num )

拷贝num个字符从源字符串到目标字符串,如果源字符串的长度小于num,则拷贝完源字符串,后追加一个0;如果源字符串的长度大于等于num,则拷贝完num个字符串后,也追加一个0(终止字符);

注意:

这样模拟实现为

点击查看代码
char* my_strncat(char*dest,const char*back,int num)
{
  char*tmp=dest;
  while(*dest)
  {
    dest++;
  }
  while(num--)
  {
    if(!(*dest++=*back++)
       {
         return tmp;
       }
  }
       *dest='\0';
       return tmp;
}
int main()
{
  int num;
  char arr1[30]="I LOVE YOU";
  char arr2[]="wpf";
  scanf("%d",&num);
  my_strncat(arr1,arr2,num);
  printf("%s\n",arr1);
  return 0;
}