一:对strncpy的简单介绍
1.调用形式:
char * strncpy ( char * destination, const char * source, size_t num )
2.拷贝num个字符从源字符串到目标空间。
3.如果源字符串的长度小于num,则拷贝完源字符串之后,在目标的后边追加0,直到num个。
二:调用strncpy函数
1.程序代码
#include<stdio.h>
#include<string.h>
int main()
{
char arr1[]="I am a good boy!";
char arr2[20];
int n=strlen(arr1);
printf("%s\n",strncpy(arr2,arr1,n+1)); //"n+1 "的目的是将' \0 '拷贝到目标串
return 0;
}
2.监视结果
未拷贝前的arr2数组
拷贝后的arr2数组
3.运行结果
三:模拟实现strncpy
1.程序代码
#include<stdio.h>
#include<string.h> //模拟实现strncpy
void my_strncpy( char *brr,
const char *arr,
int n)
{
char* p= brr;
const char* q= arr;
while(n--)
{
*p=*q;
p++;
q++;
}
printf("%s",brr);
}
int main()
{
const char arr[]="I am a good boy!";
char brr[20];
my_strncpy(brr,arr,strlen(arr)+1); //strlen(arr)+1目的是将 arr数组的' \0 '拷贝给brr数组
printf("\n");
return 0;
}
2.监视结果
未拷贝前的brr数组
拷贝后的brr数组
3.运行结果
四:对strncpyd的补充说明
对strncpy调用的介绍
strncpy()用来复制字符串的前n个字符,其原型为: char * strncpy(char *dest, const char *src, size_t n);
【参数说明】dest 为目标字符串指针,src 为源字符串指针。
strncpy()会将字符串src前n个字符拷贝到字符串dest。
不像strcpy(),strncpy()不会向dest追加结束标记’\0’,这就引发了很多不合常理的问题,将在下面的示例中说明。
注意:src 和 dest 所指的内存区域不能重叠,且 dest 必须有足够的空间放置n个字符。