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;
}