【字符串函数2】

5. strncpy 函数的使用和模拟实现

   选择性拷贝

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

1.拷贝num个字符从源字符串到目标空间。
2.如果源字符串的⻓度⼩于num,则拷⻉完源字符串之后,在⽬标的后边    追加0   ,直到num个。

测试

int main()
{char arr1[] = "abcd";char arr2[10] = { 0 };strncpy(arr2, arr1, 3);printf("%s", arr2);return 0;
}

结果:

模拟实现:

char* my_strncpy(char* dest, const char* src, size_t num) 
{char* ret = dest;//把初始地址放在retassert(dest && src);//两者不能为空值 while (num--){*(char*) dest = *(char*) src;//  这样也行  * dest = *src;  用char* 是把进行一个字节逐步进行替换dest++;src++;}return ret;
}
int main()
{char arr1[] = "abcd";char arr2[10] = { 0 };my_strncpy(arr2, arr1, 3);printf("%s", arr2);return 0;
}

6.strncat函数的使用和模拟实现    

选择性字符串拼接    拼接后默认添加  ‘\0’

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

1.将source指向字符串的前num个字符追加到destination指向的字符串末尾,再追加⼀个 \0 字

2.如果source指向的字符串的⻓度小于num的时候,只会将字符串中到\0 的内容追加到destination指向的字符串末尾

测试

int main()
{char arr1[10] = "abcd";char arr2[10] = "efg";strncat(arr1, arr2, 3); //在arr1后拼接arr2printf("%s", arr1);return 0;
}

结果:

模拟实现:

char*  my_strncat(char* dest, const char* src, size_t num)
{assert(dest && src);char* ret = dest;//主要是把dest遍历便  到达dest的字符串的结尾  然后把src增加到dest后面while (*dest){dest++;}while ((*dest++ = *src++) && num--) {}*dest = '\0';return 0;
}
int main()
{char arr1[10] = "abcd";char arr2[10] = "efg";my_strncat(arr1, arr2, 3); //在arr1后拼接arr2printf("%s", arr1);return 0;
}

7.strncmp函数的使用

比较:选择性两字符串的比较

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

比较str1和str2的前num个字符,如果相等就继续往后⽐较,最多⽐较num个字⺟,如果提前发现不⼀样,就提前结束,⼤的字符所在的字符串⼤于另外⼀个。如果num个字符都相等,就是相等返回

int main()
{char arr1[10] = "abcd";char arr2[10] = "efg";int ret=strncmp(arr1, arr2, 3); //再arr1后拼接arr2printf("%d",ret);return 0;
}

结果:

8.strstr 的使用和模拟实现  

在一个字符串中查找一个字符串

char * strstr ( const char * str1, const char * str2)//函数返回字符串str2在字符串str1中第⼀次出现的位置 之后的内容

测试

int main()    
{char arr1[] = "this is an apple";const char* p = "is";char* ret=strstr(arr1, p);printf("%s", ret);return 0;
}

模拟实现:

char* mystrstr(const char* str1, const char* str2)
{//设置两个固定位置的指针const char* s1 = NULL;const char* s2 = NULL;//设置要查找字符串的位置const char* cur = str1;//首先判断要查找的是否为空if (*str2 == '\0')return (char*)str1;//进行查询while (*cur)    //当*cur!='\0'{s1 = cur;s2 = str2;//满足以下要求   否则无法查询   原字符串和被查找字符串都不能为 '\0'   while (*s1 != '\0' && *s2 != '\0' && *s1 == *s2){s1++;s2++;     //两者遇到 同时增加}//当被查找的查到   '\0'  则查找完成if (*s2 == '\0'){return cur;}cur++;}return NULL;
}
int main()    
{char arr1[] = "this is an apple";const char* p = "is";char* ret= mystrstr(arr1, p);printf("%s", ret);}

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

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

相关文章

语法04 C++ 标准输入语句

标准输入 使用格式:cin >> 输入的意思就是把一个值放到变量里面去,也就是变量的赋值,这个值是由我们自己输入的。 (注意:输入变量前要先定义,输入完之后要按Enter键。) 输入多个变量,与输出类似,…

unity数独游戏

using System; using System.Collections; using System.Collections.Generic; using UnityEngine; using UnityEngine.UI;public class MainMenuPanel : MonoBehaviour {public Button btnPlay; // 开始按钮public Slider sldDifficulty; // 难度滑动条private void Awake(){/…

springer 在线投稿编译踩坑

springer投稿,在线编译踩坑总结 注意: 有的期刊需要双栏,而预定义的模板中可能为单栏,需要增加iicol选项。 例如: \documentclass[sn-mathphys-num]{sn-jnl}% —>\documentclass[sn-mathphys-num, iicol]{sn-jnl}…

Matlab的Simulink系统仿真(simulink调用m函数)

这几天要用Simulink做一个小东西,所以在网上现学现卖,加油! 起初的入门是看这篇文章MATLAB 之 Simulink 操作基础和系统仿真模型的建立_matlab仿真模型搭建-CSDN博客 写的很不错 后面我想在simulink中调用m文件 在 Simulink 中调用 MATLA…

远程问诊软件哪款好?选欣九康诊疗系统

近几年国家相继推出了支持发展“互联网医疗”的政策,如今随着相关政策的不断落实推进,市场上涌现出了一大批在线咨询、电子处方和远程问诊的医疗平台,而在面对种类如此繁多的医疗平台究竟选择哪款更好便成了医疗机构非常头疼的事情&#xff0…

数据中心布线管理:预标记线缆与移动扫描技术的融合

随着信息技术的飞速发展,数据中心布线管理面临着前所未有的挑战。传统的布线管理方式已无法满足现代数据中心高效、准确和可靠的需求。在这样一个背景下,预标记线缆与移动扫描技术的结合,为数据中心布线管理带来了革命性的解决方案。 布线管理…

港理工最新综述:基于LLM的text-to-SQL调查(方法实验数据全面梳理)1

【摘要】文本到SQL旨在将自然语言问题转换为可执行的SQL语句,这对用户提问理解、数据库模式理解和SQL生成都是一个长期存在的挑战。传统的文本到SQL系统包括人工工程和深度神经网络。随后,预训练语言模型(PLMs)被开发并用于文本到SQL任务,取得了可喜的成绩。随着现代数据库变得…

B站画质补完计划(3):智能修复让宝藏视频重焕新生

1 老片存在什么画质问题? B站作为一个拥有浓厚人文属性的平台社区,聚集了诸如《雍正王朝》、《三国演义》等经典影视剧集,同时也吸引了大量用户欣赏、品鉴这些人文经典 。但美中不足的是,由于拍摄年代久远、拍摄设备落后、数据多次…

神舟电脑文件误删怎么办?这些恢复方法助你轻松解决

神舟电脑文件误删怎么办?在信息爆炸的时代,电脑已经成为我们日常生活和工作中不可或缺的重要工具。然而,有时我们会因为一些不小心的操作,误删了电脑中的重要文件,尤其是在使用神舟电脑这类高性能设备时,文…

怎么做出用于收集信息的二维码?采集信息的表单二维码制作技巧

现在二维码在日常生活中的应用越来越广泛,经常被用来展示多种内容展示,比如视频、图片、文件、音频、文本等内容,都可以通过生成二维码的方式来为其他人提供相关信息的展示。二维码除了有展示内容的用途外,现在很多人也会生成表单…

短剧分销小程序:影视产业链中的新兴力量

一、引言 在数字化浪潮的推动下,影视产业正迎来一场深刻的变革。短剧分销小程序作为这场变革中的新兴力量,正以其独特的魅力和价值,逐渐在影视产业链中崭露头角。本文将探讨短剧分销小程序在影视产业链中的新兴地位、其带来的变革以及未来的…

【枚举】564. 寻找最近的回文数

本文涉及知识点 枚举 LeetCode564. 寻找最近的回文数 给定一个表示整数的字符串 n ,返回与它最近的回文整数(不包括自身)。如果不止一个,返回较小的那个。 “最近的”定义为两个整数差的绝对值最小。 示例 1: 输入: n “123”…

【日记】常去的那家饭馆转让了……(399 字)

正文 晚上吃饭,常去的那家饭馆门市转让了,不做了。sad。 不久之前,临近下班了,我忘了报一个表给副行长,那时候系统已经进不去了,查不了数据。于是我随便转发了一张以前的日报表给他,日期都没改。…

长亭雷池部署

安雷池推荐环境 我这个网站的1804也就是18.04 Index of /ubuntu-releases/ (163.com) 然后照着ppt做就行自带ubunutu 我是默认安装不是简易安装 之前在自己的虚拟机docker上试过安装github上的雷池 现在重新安装了ubuntu 在我的ubuntu上安装一个雷池 这是长亭的学习计划 …

Elasticsearch 认证模拟题 - 19

一、题目 使用异步查询 task1 索引,并且 找到 miantable_name 字段值为 name8 的文档 1.1 考点 异步搜索 1.2 答案 POST task1/_async_search {"query": {"term": {"miantable_name": {"value": "name8"}}}…

excel中按多列进行匹配并对数量进行累加

公司的生产计划是按订单下发,但不同订单的不同产品中可能有用到相同的配件,按单1对1时,对计算机十分友好,但对于在配件库检料的工人来说就比较麻烦,上百条产品里可能会有多条都是相同的产品,首先考虑的办法…

Tuple 元组

文章目录 一、什么是元组 ?二、元组的具体操作2.1 创建元组2.1.1 tuple() 创建元组函数和 list() 创建列表函数总结 2.2 元组的元素访问操作2.3 元组的元素计数操作2.4 zip 对象 一、什么是元组 ? 列表属于可变序列,可以任意修改列表中的元素。 元组的…

前端菜鸡流水账日记 -- pnpm的学习

哈咯哇大家,我又来了,最近稍微悠闲一些,所以就趁着这个机会学习一些新的知识,今天就是碰巧遇到了pnm,这个可以看作是npm的升级版本,比npm要快,用起来也更得劲更迅速 官网地址:https…

SJ704安全帽电绝缘性能测试仪

一、仪器用途 用于测试安全帽对电的绝缘性能。 二、主要技术指标 1、电流表示值误差1% 2、电压表示值误差1% 3、计时器示值误差1% 4、探头直径4mm,顶端为半球形 5、能在1min内电压增加至1200V25V,保持15s。最大测试电压5KV。 三、仪器特征 1、配…

FuTalk设计周刊-Vol.036

🔥AI漫谈 热点捕手 1、Stable Zero123:从单张图像生成高质量 3D 对象 Stable Zero123 可以生成物体的新颖视图,展示从各个角度对物体外观的 3D 理解,由于训练数据集和高程条件的改进,其质量比 Zero1-to-3 或 Zero123-XL 显著提高…