strncpy,strncat,strncmp字符串函数详解(长度受限制)

news2024/11/20 20:31:39

目录

一,strncpy函数

1,strncpy函数简介

2,strncpy函数示例 

3,注意事项

二,strncat函数

1,strncat函数简介

2,strncat函数示例 

3,注意事项

三,strncmp函数

1,strncmp函数简介

2,strncmp函数示例 

3,注意事项


一,strncpy函数

1,strncpy函数简介

strncpy函数用于将一个字符串的一部分复制到另一个字符串中。

🍂函数头文件:

#include <string.h>

🍂函数原型: 

char * strncpy ( char * destination, const char * source, size_t num );
  • dest:目标字符串,即要将源字符串复制到的位置。
  • src:源字符串,即要复制的字符串。
  • num:要复制的字符数。 

🎈 strncpy函数将源字符串src的前n个字符复制到dest中。如果源字符串的长度小于n,则复制完源字符串后,会用空字符'\0'填充剩余的空间。

🎈如果源字符串的长度大于或等于n,那么目标字符串将不会以空字符结尾。

 

🧅 因此,在使用strncpy函数复制字符串时,需要手动在目标字符串的最后一个字符后面添加空字符。

2,strncpy函数示例 

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

int main()
{
	char dest[20];
	char src[] = "helllo world!";

	strncpy(dest, src, 8);
	dest[8] = '\0';

	printf("%s\n", dest);

	return 0;
}

🍂运行结果:

🍂 代码解释:

在上面的代码中,我们定义了一个目标字符串dest和源字符串src ,然后我们使用strncpy函数将src的前8个字符复制到dest中。由于目标字符串的长度大于等于源字符串的长度,我们需要在dest的后面添加空字符。最后,我们打印出复制后的字符串。

3,注意事项

1,目标字符串dest必须足够大,以容纳要复制的以及额外的空字符。否则,可能会导致缓冲区溢出的问题。

2,如果源字符串的长度小于n,则目标字符串将以空字符结尾。如果源字符串的长度大于或等于n,则目标字符串将不会以空字符结尾,需要手动添加空字符。

3, strncpy函数只复制源字符串的前n个字符,而不会复制整个字符串。

二,strncat函数

1,strncat函数简介

strncat函数用于将一个字符串的一部分追加到另一个字符串的末尾。

  🍂函数头文件:

#include <string.h>

🍂函数原型: 

char * strncat ( char * destination, const char * source, size_t num );

dest:目标字符串,即要将源字符串追加到的位置。

src:源字符串,即要追加的字符。

num:要追加的字符数。 

🎈注:

strncat函数会将源字符串src的前n个字符追加到目标字符串dest的末尾,并在追加完后在dest的末尾添加一个空字符'\0'。

2,strncat函数示例 

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

int main()
{
	char dest[20] = { "hello " };
	char src[] = { "world!" };

	strncat(dest, src, 5);
	printf("%s\n", dest);

	return 0;
}

 🍂运行结果:

3,注意事项

1,目标字符串dest必须足够大,以容纳要追加的字符以及额外的空字符。否则,可能会导致缓冲区溢出的问题。

2,如果源字符串的长度小于n,会将源字符串的全部字符追加到目标字符串中。如果源字符串的长度大于或等于n,则只会将源字符串的前n个字符追加到目标字符串中。

3,strncat函数会在目标字符串的末尾添加一个空字符

三,strncmp函数

1,strncmp函数简介

strncmp函数用于比较两个字符串的前n个字符是否相等。

  🍂函数头文件:

#include <string.h>

 🍂函数原型:  

int strncmp ( const char * str1, const char * str2, size_t num );

str1:第一个字符串。

str2:第二个字符串。

num:要比较的字符数。  

2,strncmp函数示例 

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

int main()
{
	char str1[] = { "abcde" };
	char str2[] = { "abxyz" };

	int ret = strncmp(str1, str2, 3);
	if (ret == 0)
		printf("str1和str2相等\n");
	else if (ret > 0)
		printf("str1大于str2\n");
	else
		printf("str1小于str2\n");

	return 0;
}

  🍂运行结果:

 🍂 代码解释:

在上面的代码示例中,我们定义了两个字符串str1和str2。然后,我们使用strncmp函数比较了这两个字符串的前3个字符,由于str1字符串中'c'字符的ASCII码值小于str2字符串中'x'字符的ASCII码值,所以返回一个小于0的整数,根据返回值的不同,我们打印出相应的信息。

3,注意事项

1,如果两个字符串的长度小于n,则会比较两个字符串的全部字符,如果两个字符串的长度大于或等于n,则只会比较两个字符串的前n个字符。

2,返回值为0表示两个字符串的前n个字符完全相等

返回值小于0表示第一个字符串的前n个字符小于第二个字符串的前n个字符。

返回值大于0表示第一个字符串的前n个字符大于第二个字符串的前n个字符。

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

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

相关文章

通讯录的完善(文件操作)

目录 前言&#xff1a; 保存联系人 读取联系人&#xff1a; 总结&#xff1a; 前言&#xff1a; 对于我们之前利用动态内存实现的通讯录来说&#xff0c;存在一个严重的问题。 就是当我们的程序运行结束&#xff0c;此时我们在通讯录所添加的全部联系人信息会全部丢失。 …

网页设计学习记录-常用圆角按钮css

.button {border: 0px;padding: 5px;border-radius: 100px;background-color: #9eb80c;width: 150px;height: 50px;color: white; } .button:hover {cursor: pointer; } 效果图

【AN-Animate教程——了解AN用途】

【AN-Animate教程——了解AN用途】 Animate是啥Animate能做什么2D动画制作帧动画制作矢量图形绘制和编辑角色建模与骨骼绑定动画特效和过渡效果动画导出与发布 除了动画还能做什么&#xff1f; 这一段时间没更新&#xff0c;主要是工作生活陷入了一个瓶颈。本想着阅读一些人工智…

安卓三防平板在行业应用中有哪些优势

在工业维修和检测中&#xff0c;安卓三防平板的应用也十分广泛。它可以搭载各种专业软件和工具&#xff0c;帮助工人们进行设备故障排查和维护&#xff0c;降低了维修成本和停机时间。 一、产品卖点&#xff1a; 1. 防水性能&#xff1a;该手持平板采用了防水设计&#xff0c;…

go mod 使用三方包、go get命令

一、环境变量设置 go env -w GO111MODULEon go env -w GOPROXYhttps://goproxy.cn,https://goproxy.io,direct 二、goland开启 go mod 三、go mod 使用 在go.mod文件中声明三方包地址&版本号即可&#xff0c;如下&#xff1a; 开发工具goland会自动解析go.mod文件&#x…

Vscode中使用Romote远程开发调试Ros2环境

首先&#xff0c;成功安装ros2环境&#xff0c;参考官方文档中的教程&#xff0c;能用运行出来此处的代码 Writing a simple publisher and subscriber (Python) — ROS 2 Documentation: Iron documentation 下载vscode&#xff0c;进行远程开发&#xff0c;具体参考&#xf…

微软 AR 眼镜新专利:包含热拔插电池

近日&#xff0c;微软在增强现实&#xff08;AR&#xff09;领域进行深入的研究&#xff0c;并申请了一项有关于“热插拔电池”的专利。该专利于2023年10月5日发布&#xff0c;描述了一款采用模块化设计的AR眼镜&#xff0c;其热插拔电池放置在镜腿部分&#xff0c;可以直接替代…

视频监控管理系统EasyCVR+智能分析网关如何为银行安保系统保驾护航

银行是国家重点安防保护单位&#xff0c;现金流通性高、人员复杂&#xff0c;对高精度的安全监控尤为需要。特别在当今社会&#xff0c;高智商犯罪分子层出不穷&#xff0c;恶性案件也屡屡发生。传统的监控模式已经无法满足银行的安保要求&#xff0c;而现在市面上融合了智能化…

交直流回馈式电子负载的优势和特点

交直流回馈式电子负载是用于测试和模拟电源、电池和其他电子设备的负载装置&#xff0c;它能够承受大范围的负载电流和电压&#xff0c;可以满足不同类型电子设备的测试需求。该负载装置具有精确的电流和电压测量功能&#xff0c;可以提供准确的测试结果&#xff0c;帮助用户评…

淘宝商品评论数据接口,淘宝商品评论API接口

淘宝商品评论数据接口可以通过淘宝开放平台API获取。 通过构建合理的请求URL&#xff0c;可以向淘宝服务器发起HTTP请求&#xff0c;获取商品评论数据。接口返回的数据一般为JSON格式&#xff0c;包含了商品的各种评价信息。获取到商品评论数据后&#xff0c;可以对其进行处理…

Spring WebClient 基于响应式编程模型的HTTP客户端

一、简介 WebClient是一个非阻塞的、可扩展的、基于Reactive Streams规范的HTTP客户端。它提供了一种简洁的方式来进行HTTP请求&#xff0c;并且可以很好地与其他Spring组件集成。WebClient支持同步和异步操作&#xff0c;使得它非常适合用于构建响应式应用程序。 WebClient允…

全网都在用的英语配音软件~

现在有很多智能配音软件都可以输入文字内容生成语音&#xff0c;让我们给视频配音的过程更加简单方便。但目前很多比较常见的文字转语音软件都只能配音中文&#xff0c;而无法配音英语。想要智能生成英语的配音的小伙伴看过来&#xff0c;给大家推荐一款超实用的英语配音软件&a…

从零开始学习 Java:简单易懂的入门指南之多线程(三十四)

多线程 1.实现多线程1.1简单了解多线程1.2并发和并行1.3进程和线程1.4实现多线程方式一&#xff1a;继承Thread类【应用】1.5实现多线程方式二&#xff1a;实现Runnable接口【应用】1.6实现多线程方式三: 实现Callable接口【应用】1.7设置和获取线程名称【应用】1.8线程休眠【应…

Linux系统编程:编译过程以及GDB调试

编译工具链SDK&#xff08;Software Development Kit&#xff09; 在windows下编写程序&#xff0c;我们通常会用IDE&#xff0c;比如idea、vs等&#xff0c;这些工具将编译链接什么的全都暗地里解决好了我们只要写程序就行&#xff0c;但很明显&#xff0c;在Linux系统下做不…

网吧2023:中国电竞的滚烫夏天

【潮汐商业评论/原创】 随着亚运会“中国队拿下电竞首金”登上微博热搜&#xff0c;电竞与网游又一次占据着网民视野中的C位&#xff0c;场内电竞中心的比赛热血澎湃&#xff0c;场外网吧的欢呼声也此起彼伏。 中国玩家的网游之路大多是从网吧里一排17英寸的大屁股显示器前开…

大模型之Prompt研究和技巧

大模型之Prompt研究和技巧 大模型之Prompt编写简介组成技术Zero-ShotFew-shotCOTCOT-SCTOTGoTReAct 大模型之Prompt编写 简介 Prompt是是给 AI **模型的指令&#xff0c;**一个简短的文本输入&#xff0c;用于引导AI模型生成特定的回答或执行特定任务。 Prompt是你与语言模型沟…

milvus测试

milvus测试 目标 其实&#xff0c;我应该弄明白他的输入输出分别是什么&#xff1f; 输入是图片&#xff0c;图片经过ml模型进行特征提取&#xff0c;再在milvus中进行存储或者检索 部署 ✘ delldell-Precision-3630-Tower  /nvme/baum/git-project/milvus   master …

【EI会议征稿】第三届计算建模、仿真与数据分析国际学术会议(CMSDA 2023)

第三届计算建模、仿真与数据分析国际学术会议(CMSDA 2023) 第三届计算建模、仿真与数据分析国际学术会议(CMSDA 2023)将于2023年12月22-24日即将在中国海南省三亚市召开。首届计算建模、仿真与数据分析国际学术会议已于2021、2022年连续成功举办&#xff0c;吸引了近200名计算机…

投你500万,你想做什么?头脑风暴一下 无限想像 有想法的人都能投 数学

投你500万&#xff0c;你想做什么&#xff1f;头脑风暴一下 我要投我自己 1、先出国读个博。8年 30万/年 240万 2、另外260万想研究啥就研究啥。比如 3栖动物&#xff1a;把人改造成3栖动物&#xff0c;可以在水里&#xff0c;海洋里&#xff0c;陆地上&#xff0c;天空都能生…

计算机的层次与编程语言

文章目录 前言一、程序翻译与程序解释二、计算机的层次与编程语言1.硬件逻辑层2.微程序机器层3.传统机器层4.操作系统层5.汇编语言层6.高级语言层7.应用层 总结 前言 今天给大家介绍一下计算机的层次与编程语言&#xff0c;包含两个板块&#xff1a;程序翻译与程序解释、计算机…