strncpy函数的调用与模拟实现!!

本文深入解析strncpy函数的工作原理,包括其调用形式、如何复制字符串,并通过实例演示了如何正确使用strncpy避免常见错误。同时,提供了strncpy的模拟实现代码,帮助读者理解其内部机制。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一:对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个字符。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值