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

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

猜你喜欢

转载自blog.csdn.net/jack_wang128801/article/details/84455335