模拟实现strncpy

代码展示:

javascript 复制代码
#include <stdio.h>

#include <stddef.h>



//模拟strncpy 

char* my_strncpy(char* dest, char* src, size_t n)

{

	char* start = src;

	while(n > 0 && *src != '\0')

	{

		*dest = *src;

		dest++;

		src++;

		n--;

	}

	while(n > 0)

	{

		*dest = '\0';

		dest++;

		n--;

	}

	return start;

}



//测试 

int main()

{

	char arr1[20] = "xxxxxxxxxx";

	char arr2[] = "abcdef";

	

	//测试源串长度<n

	my_strncpy(arr1, arr2, 8);

	printf("结果为%s\n", arr1);

	

	//测试源串长度>n

	char arr3[] = "1234567890";

	my_strncpy(arr3, arr2, 3);

	printf("结果为%s\n", arr3);

	return 0;

};

测试结果:

总结:

本题主要用到指针操作,需要考虑指针移动和指针类型等细节。

坚持编程,我一直在路上!

相关推荐
爱聊灵光的维C17 小时前
C语言初阶:关于函数设计的详细讲解和注意事项
c语言·开发语言·青少年编程·蓝桥杯·学习方法
Figo_Cheung18 小时前
Figo基于结构空间算法假设(SSAH)的生成式大模型优化范式与工程实现边界研究——提出适应AGI架构演化的自适应拓扑感知表征机制
算法·架构·agi
wuminyu18 小时前
JVM规范学习总结:class执行性能差异
java·linux·c语言·jvm·c++
旖旎夜光18 小时前
LCR 170:交易逆序对的总数(归并排序) —— 题解
c++·学习·算法·leetcode·排序算法
C++ 老炮儿的技术栈18 小时前
Linux 动态库踩坑:明明重新编译了 .so,调用函数返回值却一直不变(libfjrobot.so 版本号异常排查实录)
linux·c语言·网络·c++·visual studio
微尘hjx1 天前
【ByteTrack 04】多轨迹算法ByteTrack改进点
算法·yolo·目标检测·目标跟踪·bytetrack·ultralytics·车跟踪
小向是个Der1 天前
嵌入式进阶——MCU上电后的动作
c语言·单片机·mcu·学习·链接脚本
bkspiderx1 天前
基于Socket的广播通信及C语言实现详解
c语言·开发语言·socket·广播·socket的广播通信
小蒋观天下1 天前
雷击与浪涌防护:前端SPD选型、接地网误区,接地不当反而引入干扰
深度学习·算法·机器学习