C语言学习之我见-strncpy()字符串复制函数(可控制范围)

strncpy()函数,用于两个字符串值的复制。
(1)函数原型

 char *strncpy(char * _Dest,const char * _Source,size_t _Count);

(2)头文件

string.h

(3)功能

将从const char * _Source到''结尾的字符串(包括'')复制到char * _Dest
所指的字符串处。
size_t _Count确定对const char * _Source的最大截取范围
返回值char * = char * _Dest

(4)基础实例代码

    char a[30] = "12345678901234567890";
	char b[]="zobol";
	for(int i=0;i<30;++i)
	{
		printf("%c ",a[i]);//将字符数组中的所有值都输出
	}
	for(int i=0;i<6;++i)
	{
		printf("%c ",b[i]);
	}

	strcpy(a,b,5);//关键函数
	for(int i=0;i<30;++i)
	{
		printf("%c ",a[i]);
	}
	printf("%s
",a);

(5)输出情况
在这里插入图片描述
(6)问题1:char * _Dest所指向的必须是字符串的首地址吗?
回答:不需要,可以从中间a+3输入,或者&a[i]

strncpy(a+3,b,5);
strncpy(&a[4],b,5);

在这里插入图片描述
(7)问题2:返回值char*是做什么用?
回答:char*返回的是第一个参数,主要是用来方便printf()函数输出。

	printf("%s
",strncpy(&a[3],b,5));

在这里插入图片描述
(8)问题3:size_t _Count是用来做什么的?
回答:是用来确保复制,不会导致数据溢出。一般设定为char * _Dest所指向字符串的(最大值-1)。记得确保给''的位置也要准备好。

如果对你有帮助,欢迎加我的个人公众号:zobol的魔法藏书室

原文地址:https://www.cnblogs.com/zobol/p/14358027.html