模拟实现字符串函数(5): strncpy

2024-01-23 15:25:46 浏览数 (2)

1.函数介绍

拷贝num个字符从源字符串到目标空间。 如果源字符串的长度小于num,则拷贝完源字符串之后,在目标的后边追加0,直到num个

strncpy与strcpy的作用是一样的,区别在于strncpy指定了复制字符的个数。

2.思路分析

这里多了个参数num,指定的复制字符个数,就得考虑两种情况:

1.当 源字符串长度大于num时,正常复制到num结束。

2.当源字符串长度小于num时,就得在后面追加剩余个数的‘’。

代码语言:javascript复制
#define _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>
#include<string.h>
#include<assert.h>
//模拟实现strncpy
char* my_strncpy(char* dest, char* src, size_t num)
{
	char* ret = dest;
	assert(src);
	assert(dest);
	while (num&&(*dest  =*src  ))//当*src==''时会跳出循环
	{
		num--;
	}
	if (num)//经历上层循环后,剩余个数继续遍历加空字符
	{
		while (num--)
		{
			(*dest  ) = '';
		}
	}
	return ret;

}

int main()
{
	char str1[] = "abcdefghij";
	char str2[] = "aaaa";
	my_strncpy(str1 2, str2, 5);
	printf("%sn", str1);
	return 0;
}

0 人点赞