前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >模拟实现字符串函数(5): strncpy

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

作者头像
对编程一片赤诚的小吴
发布2024-01-23 15:25:46
760
发布2024-01-23 15:25:46
举报

1.函数介绍

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

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

2.思路分析

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

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

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

代码语言: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=='\0'时会跳出循环
	{
		num--;
	}
	if (num)//经历上层循环后,剩余个数继续遍历加空字符
	{
		while (num--)
		{
			(*dest++) = '\0';
		}
	}
	return ret;

}

int main()
{
	char str1[] = "abcdefghij";
	char str2[] = "aaaa";
	my_strncpy(str1+2, str2, 5);
	printf("%s\n", str1);
	return 0;
}
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2024-01-23,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1.函数介绍
  • 2.思路分析
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档