字符串中的strcpy和strncpy区别

news2024/10/6 10:33:24

strcpy:函数原型是char *strcpy(char* dest, const char *src),含义是将src中的字符串复制到dest中。

strncpy:函数原型是char *strncpy(char *dest const char *src,int n),表示把src所指向的字符串中以src地址开始的前n个字节复制到dest所指的数组中,并返回被复制后的dest。

注意:src 和 dest 所指的内存区域不能重叠,且dest 必须有足够的空间放置 src 所包含的字符串(包含结束符NULL)

代码展示:

strcpy

#include <stdio.h>
#include <string.h>
#include <stdlib.h>

char* mystrcpy2(char *a,char *b)
{
	if(a==NULL ||b==NULL)//防止悬挂指针
	{
		return NULL;
	}
	char *result=a;//保存a的地址
	while((*a++=*b++)!='\0');//赋值后偏移,不等于0继续复制偏移
	
	*a='\0';//b=‘\0’后a=‘\0’
	return result;
}

int main()
{
	char a[128]={'\0'};
	char *b="hello word";
	
	char c='m';
	char d;
	
	if((d=c)=='m')//对mystrcpy的while部分进行验证
	{
		printf("OK\n");
	}
	
	mystrcpy2(a,b);
	puts(a);
	return 0;
}

strncpy

#include <stdio.h>
#include <string.h>
#include <stdlib.h>

char* mystrncpy(char *a,char *b,int c)
{
	if(a==NULL ||b==NULL)//防止悬挂指针
	{
		return NULL;
	}
	char *result=a;//保存a的地址
	while(*b!='\0'&&c>0)
	{
		*a++=*b++;//b的值给a并开始偏移
		c--;//设定偏移次数后递减,等于0跳出循环
	}
	if(c>0)//b有10个字节,假入要其偏移15次给a,那么在他达到'\0'后进行循环,让其后面的字节都为‘\0’,当c=0时跳出循环
	{
		while(c>0)
		{
			*b++='\0';//让后面的都为'\0'
			c--;
		}
		return b;
	}
	*a='\0';//b=‘\0’后a=‘\0’
	return result;
}

int main()
{
	char a[128]={'\0'};
	char *b="hello word";
	
	mystrncpy(a,b,5);
	puts(a);
	
	return 0;
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1139191.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

香港施政报告人才引进政策2023全面解读,对优才计划申请是否有影响?

香港施政报告人才引进政策2023全面解读&#xff0c;对优才计划申请是否有影响&#xff1f; 香港第二份施政报告10月25日出来了&#xff01;这次真的是“走进民生”啊&#xff0c;什么路都帮你想好了&#xff01; 总结就是&#xff1a;继续抢人才、留人才&#xff01;在昨天的《…

103.linux5.15.198 编译 firefly-rk3399(2)

1. 平台&#xff1a; rk3399 firefly 2g16g 2. 内核&#xff1a;linux5.15.136 &#xff08;从内核镜像网站下载&#xff09; 3. 交叉编译工具 gcc version 7.5.0 (Ubuntu/Linaro 7.5.0-3ubuntu1~18.04) 4. 宿主机&#xff1a;ubuntu18.04 5. 需要的素材和资料&#xff…

MySQL 单表查询 多表设计

目录 数据库操作-DQL(单表查询)语法基本查询&#xff08;不带任何条件&#xff09;条件查询&#xff08;where&#xff09;聚合函数分组查询&#xff08;group by [having]&#xff09;&#xff08;重点&#xff09;排序查询&#xff08;order by&#xff09;&#xff08;重点&…

MySQL数据库基本操作2

文章目录 主要内容一.DQL1.语法格式代码如下&#xff08;示例&#xff09;: 2.数据准备代码如下&#xff08;示例&#xff09;: 3.简单查询代码如下&#xff08;示例&#xff09;: 4.运算符5.运算符操作-算术运算符代码如下&#xff08;示例&#xff09;: 6.运算符操作-条件查询…

Spring Cloud Sentinel整合Nacos实现配置持久化

sentinel配置相关配置后无法持久化&#xff0c;服务重启之后就没了&#xff0c;所以整合nacos&#xff0c;在nacos服务持久化&#xff0c;sentinel实时与nacos通信获取相关配置。 使用上一章节Feign消费者服务实现整合。 版本信息&#xff1a; nacos:1.4.1 Sentinel 控制台 …

【DRAM存储器十七】DDR2介绍-DDR2的新增技术-Post CAS、ODT、RDQS、OCD

&#x1f449;个人主页&#xff1a;highman110 &#x1f449;作者简介&#xff1a;一名硬件工程师&#xff0c;持续学习&#xff0c;不断记录&#xff0c;保持思考&#xff0c;输出干货内容 参考资料&#xff1a;《镁光DDR数据手册》 目录 Post CAS ODT RDQS OCD Post CA…

方舟生存进化ARK个人服务器搭建教程保姆级

方舟生存进化ARK个人服务器搭建教程保姆级 大家好我是艾西&#xff0c;在很久之前我有给大家分享过方舟生存进化的搭建架设教程&#xff0c;但时间久远且以前的教程我现在回头看去在某些地方说的并不是那么清楚。最近也是闲暇无事打算重新巩固下方舟生存进化的搭建架设教程&…

[计算机提升] Windows文件系统类型介绍

1.13 文件系统 在Windows系统中&#xff0c;文件系统是一种用于组织和管理计算机上存储的文件和目录的方法。它提供了一种结构化的方式来访问、存储和检索数据。 以下是Windows系统中常见的文件系统&#xff1a; FAT&#xff08;FAT16、FAT32&#xff09;&#xff1a;FAT&…

2023年中国研磨液需求量、市场规模及行业竞争格局分析[图]

研磨是半导体加工过程中的一项重要工艺&#xff0c;它主要是应用化学研磨液混配磨料的方式对半导体表面进行精密加工&#xff0c;研磨液是平坦化工艺中研磨材料和化学添加剂的混合物&#xff0c;研磨材料主要是石英、二氧化铝和氧化铈&#xff0c;研磨液是影响半导体表面质量的…

endnote设置

问题1&#xff1a;参考文献的tab太长 首先要在endnote里面这样设置&#xff0c;file->output->edit "XXX" 保存之后&#xff0c;在word更新目录。 在word里面设置悬挂缩进 结果&#xff1a; Endnote参考编号与参考文献距离太远怎么调整 endnote 文献对齐方式…

LibTorch实战一:MNIST的python代码

目录 一、下载MNIST-demo的cpp、python版本代码 二、五分钟读懂pytorch代码 三、下载MNIST数据集、训练模型 四、模型序列化、可视化分析 本文借用mnist这个相对简易深度学习任务来开始讲解libtorch如何部署模型。因此&#xff0c;这是一个如何编写libtorch代码的实战教程。…

Linux权限大揭秘:深入理解系统安全

W...Y的主页 &#x1f60a; 代码仓库分享&#x1f495; &#x1f354;前言&#xff1a; 在之前的内容中&#xff0c;我们了解了Linux中的一些简单权限&#xff0c;如root超级账号与普通账户的区别、Linux文件权限管理、文件类型和访问权限以及许多关于修改权限的指令及其规则…

源发行版17 需要目标发行版 17问题解决

java: 警告: 源发行版 17 需要目标发行版 17 问题描述&#xff1a;解决办法&#xff1a;总结 问题描述&#xff1a; 解决办法&#xff1a; 1.将 Settings --> Build, Execution, Deployment --> Complier --> Java Complier 配置下的 Project bytecode version: 17 改…

为爱出发,与善同行丨纬创软件2023北京善行者圆满收官

2023年10月21日&#xff0c;北京善行者徒步活动在昌平正式开走。800支队伍3200名善行者队员进行32公里的公益行走。纬创软件组建「北京台协纬创软件队」&#xff0c;4名队员踏上32公里的征程&#xff0c;通过徒步筹款的方式传递善行理念&#xff0c;为贫困山区的孩子们建立“爱…

用AI打造一个属于自己的歌手,让她C位霸气出道

一、前言 今天玩儿点儿特别的&#xff0c;AI大行其道的今天&#xff0c;还没玩过AI模型的程序员绝对不是个好厨子。我本人比较喜欢音乐&#xff0c;但是一直没有出道&#xff0c;很是遗憾。那么今天&#xff0c;我就使用AI模型亲手打造一个堪比真人的歌手&#xff0c;让她C位霸…

2023年中国消防报警设备市场规模现状及行业竞争趋势分析[图]

消防安全行业主要分为消防产品和消防工程两个子行业。消防产品又可细分成消防装备、消防报警、自动灭火、防火与疏散、通用与防烟排烟、消防供水等 6 大类&#xff0c;其中消防装备主要用于消防部队&#xff0c;其他 5 大类主要用于建筑物消防。 消防行业内容 资料来源&#x…

《低代码指南》——如何通过维格表实现生产采购管理

信息 通过维格表的低代码开发能力,实现从销售订单转为生产计划工单并按需拆解为物料采购减少手工录入和计算工作,补充成熟ERP对MRP的个性化需求限制提升供应链运转效率生产采购过程中你有没有遇到这些问题?​ 从采购到生产,再到入库,流程太繁琐?生产力低下?采购系统员工…

商业级质感磨皮插件Portraiture5.0最新中文版本

整个摄影后期行业都在推崇Portraiture或DR5磨皮&#xff0c;这是一个被奉为——高级磨皮面板&#xff0c;修图神器、顶级修图的的扩展面板&#xff01;&#xff01;而最近7月份Portraiture更新到5.0版本了&#xff0c;还叫嚣“完虐”DR5高级磨皮&#xff01;&#xff01; 今coc…

手写效果流式响应(langchain+fastapi+js)

这是一个前后端完整可用的小项目 后端是 Python 的 FastAPI 框架&#xff0c;调用 langchain 进行 openai 的模型对话。前端是纯html css javascript&#xff0c;没调用任何第三方库&#xff0c;方便集成到 Vue React 等现有前端项目。 聊天界面&#xff1a; 效果就是提问之…

dvadmin-打包发布-nginx-静态服务器配置-防火墙设置

文章目录 1.下载nginx2.nginx常用命令3.dvadmin打包发布4.防火墙设置 1.下载nginx 也从作者下载的网址下载&#xff1a;https://download.csdn.net/download/m0_67316550/88470098 2.nginx常用命令 注意&#xff1a;一定要在dos窗口启动&#xff0c;不要直接双击nginx.exe&a…