C语言重点突破(3)字符串函数与内存函数的介绍

news2025/2/21 21:28:47

本章重点

重点介绍处理字符和字符串的库函数的使用和注意事项

前言

C语言里对字符串函数使用的特别频繁,但却没有规定字符串类型,那它在字符串里是如何存储的呢?

字符串通常放在常量字符串 中或者 字符数组 中,字符串常量适用于那些对它不做修改的字符串函数。

1.函数介绍

1 strlen

这个函数用于返回字符串的长度,在求字符串或是遍历字符串经常用来求字符串长度。

需要注意的小细节:

1.字符串已经 '\0' 作为结束标志,strlen函数返回的是在字符串中 '\0' 前面出现的字符个数(不包
含 '\0' )。
2.参数指向的字符串必须要以 '\0' 结束。
3.注意函数的返回值为size_t,是无符号的( 易错 )

2.strcpy

提一下,通过函数名可以大概判断该函数的用法,如cpy就是copy(复制),该函数用来进行字符串的复制

需要注意的细节:

1.源字符串必须以 '\0' 结束。
2.会将源字符串中的 '\0' 拷贝到目标空间。
3.目标空间必须足够大,以确保能存放源字符串。
4.目标空间必须可变。 

3 strcat

strcat用来将两个字符串追加到一个字符串中。

需要注意的细节:

1.源字符串必须以 '\0' 结束。
2.目标空间必须有足够的大,能容纳下源字符串的内容。
3.目标空间必须可修改

4 strcmp

strcmp函数用来将两个字符串进行比较,比较的标准是按照字符的字典序进行比较的(如a与r比较,因为根据26个字母的排序,r在a之后,所以r>a)

标准规定:
第一个字符串大于第二个字符串,则返回大于0的数字
第一个字符串等于第二个字符串,则返回0
第一个字符串小于第二个字符串,则返回小于0的数字

5 strncpy

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

6 strncat

和strncpy一样,前者是复制指定字节数的数据,后者则是追加指定字节数的数据。 

7 strncmp

用来比较指定字节数的字符串,比较完后返回对应的值(与strcmp一样)
 

8 strstr

 翻译一下:返回在字符串1中,字符串2的起始位置。这个函数用来做字符匹配。

9 strtok


 这个函数用来分割字符串,关于参数

sep参数是个字符串,定义了用作分隔符的字符集合
第一个参数指定一个字符串,它包含了0个或者多个由sep字符串中一个或者多个分隔符分割的标
记。
strtok函数找到str中的下一个标记,并将其用 \0 结尾,返回一个指向这个标记的指针。(注:
strtok函数会改变被操作的字符串,所以在使用strtok函数切分的字符串一般都是临时拷贝的内容
并且可修改。)
strtok函数的第一个参数不为 NULL ,函数将找到str中第一个标记,strtok函数将保存它在字符串
中的位置。
strtok函数的第一个参数为 NULL ,函数将在同一个字符串中被保存的位置开始,查找下一个标
记。
如果字符串中不存在更多的标记,则返回 NULL 指针

用一段代码演示一下

/* strtok example */
#include <stdio.h>
#include <string.h>
int main ()
{
char str[] ="- This, a sample string.";
char * pch;
printf ("Splitting string \"%s\" into tokens:\n",str);
pch = strtok (str," ,.-");
while (pch != NULL)
{
printf ("%s\n",pch);
pch = strtok (NULL, " ,.-");
}
return 0;
}

在每调用一次strtok函数后,如果下一次的参数不置为NULL,它只会返回字符串中第一个标记前的字符串(标记集合不按顺序,以在字符串中的顺序为主),当你置为NULL后,才会在字符串中继续寻找下一个标记,并返回标记前的字符串。

10 strerror


 

该函数用来返回对应的错误信息。

2.内存函数介绍

内存函数与字符串函数的区别在于,内存函数是以内存块为单位进行调用,使得它可以作用于任意类型。

1.memcpy

函数memcpy从source的位置开始向后复制num个字节的数据到destination的内存位置。
这个函数在遇到 '\0' 的时候并不会停下来。
如果source和destination有任何的重叠,复制的结果都是未定义的

2.memmove

和memcpy的差别就是memmove函数处理的源内存块和目标内存块是可以重叠的。
如果源空间和目标空间出现重叠,就得使用memmove函数处理。

但如果用memcpy进行的话,会发现也可行,但多数情况下用memmove。

3.memcmp


 比较从ptr1和ptr2指针开始的num个字节

返回值如下

总结

上面这些基本上都是常用的字符串和内存函数,感兴趣的兄弟们可以自己了解,并尝试着模拟一下,关于字符串函数的模拟实现,我前面已经发了文章,关于内存函数的实现,会持续更新。 

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

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

相关文章

03在命令行环境中创建Maven版的Java工程,了解pom.xml文件的结构,了解Java工程的目录结构并编写代码,执行Maven相关的构建命令

创建Maven版的Java工程 Maven工程的坐标 数学中使用x、y、z三个向量可以在空间中唯一的定位一个点, Maven中也可以使用groupId,artifactId,version三个向量在Maven的仓库中唯一的定位到一个jar包 groupId: 公司或组织域名的倒序, 通常也会加上项目名称代表公司或组织开发的一…

android 固定进度环形刷新效果

android 固定进度无限旋转的环形效果 效果图 Activity 中使用 val rotation: ObjectAnimator ObjectAnimator.ofFloat(progressBar, "rotation", 0f, 360f) rotation.duration 000 // 旋转持续时间为2秒 rotation.repeatCount ObjectAnimator.INFINITE // 设置为…

Mybatis 实现简单增删改查

目录 前言 一、Mybatis是什么 二、配置Mybatis环境 三、创建数据库和表 四、添加业务代码 4.1、添加实体类 4.2、添加mapper接口 4.3、添加实现接口方法的xml文件 五、简单的增删改查操作及单元测试 5.1、单元测试 单元测试具体步骤&#xff1a; 单元测试如何才能不污…

Everest Group发布《2023年RPA供应商评估报告》:2家中国厂商持续上榜

近日&#xff0c;全球知名信息咨询机构Everest Group发布了《2023年RPA供应商评估报告》&#xff0c;分析了全球 RPA 格局和 25 家技术提供商在几个关键维度上的动态变化&#xff0c;包括客户数量、同比增长、客户对价值和满意度的反馈以及公司的行业和企业规模细分覆盖范围等。…

SAP MM学习笔记35 - 请求书照合中的差额处理(发票扣减,受入)

SAP中&#xff0c;请求书照合之后&#xff0c;发现不一致&#xff0c;就会支付保留。 支付保留&#xff0c;可以参考如下文章。 SAP MM学习笔记34 - 请求书照合中的支付保留&#xff08;发票冻结&#xff09;_东京老树根的博客-CSDN博客 即使支付保留之后暂时不付钱&#xff…

消防建筑防火3d实景漫游展示方案及特点

随着科技的不断发展&#xff0c;3D线上展厅已经成为了展示产品和宣传品牌的重要方式之一。在火灾隐患排查领域&#xff0c;3D线上展厅也有着广泛的应用。相比于传统的火灾隐患排查方式&#xff0c;3D线上展厅突破了许多局限&#xff0c;具有以下优势&#xff1a; 众所周知&…

微调Yolov8动物姿势估计模型

本文主要以狗的姿势估计为例,展示如何对当下流行的YOLOv8姿势模型进行Fine-tuning,并附录完整代码。 动物姿势估计是计算机视觉领域的一个研究方向,它是人工智能的一个子领域,专注于自动检测和分析图像或视频中动物的姿势和位置。其目标是确定一个或多个动物身体部位的空间…

EMNLP 2023 录用论文公布,速看NLP各领域最新SOTA方案

EMNLP 2023 近日公布了录用论文。 开始前以防有同学不了解这个会议&#xff0c;先简单介绍介绍&#xff1a;EMNLP 是NLP 四大顶会之一&#xff0c;ACL大家应该都很熟吧&#xff0c;EMNLP就是由 ACL 下属的SIGDAT小组主办的NLP领域顶级国际会议&#xff0c;一年举办一次。相较于…

高德地图选择点位改变图标

一.循环渲染点位 如图所示&#xff0c;紫色点位为动态循环点位 首先&#xff0c;我们请求完接口&#xff0c;返回点位 这里是全部代码 下方有拆分讲解 this.map.remove(this.marks) this.marks [] this.map.plugin([AMap.PlaceSearch], () > {var PlaceSearchOptions …

echarts一些配置项的使用

前言:我是自己最近写项目用到的,我做个整理; 一. 基本使用 1.具有大小(宽高)的div ,id唯一; 例如: <div id"crewEchart"></div> 2.在项目中引入: import * as echarts from "echarts"; 3.写一个关于他的方法,在mounted的时候调用: moun…

好用的爬取静态页面谷歌浏览器工具:Save All Resources

说明 该插件可以下载网页中的所有资源 使用方法

1513:受欢迎的牛(DFStarjan强连通分量)

信息学奥赛一本通&#xff08;C版&#xff09;在线评测系统 解析&#xff1a; tarjan算法&#xff0c;将有向图缩点&#xff0c;转换为拓扑图&#xff0c;并且统计出度为0的强连通分量&#xff1b; 如果这样的强连通分量只有一个&#xff0c;那么答案即为这个强连通分量中点的个…

fatal:Could not read from remote repository解决方法

Linux服务器如何连接GitHub&#xff1f; 生成SSH密钥 ssh-keygen -C “邮箱” -t rsa 存放位置一般是/root/.ssh/id_rsa 登录个人github&#xff0c;添加客户端生成的公钥 打开Settings&#xff0c;点击SSH and GPG keys&#xff0c;点击New SSH Key。Key中粘贴id_rsa.pub…

AutoGPT:让 AI 帮你完成任务事情 | 开源日报 No.54

Significant-Gravitas/AutoGPT Stars: 150.4k License: MIT AutoGPT 是开源 AI 代理生态系统的核心工具包。它采用模块化和可扩展的框架&#xff0c;使您能够专注于以下方面&#xff1a; 构建 - 为惊人之作打下基础。测试 - 将您的代理调整到完美状态。查看 - 观察进展成果呈…

2023年中国数据库一体机行业现状分析:随着IT发展,需求量增加[图]

数据库一体机服务器特指将数据库软件与标准硬件相结合的产物&#xff0c;其一般集数据处理、数据传输、数据存储3方面于一体&#xff0c;通过采用并行处理架构显著增加数据处理能力、可线性或准线性扩展的数据存储能力以及数据处理与数据存储之间的数据带宽&#xff0c;实现数据…

03 | Defining Query Methods 的命名语法与参数

Spring Data JPA 的最大特色是利用方法名定义查询方法&#xff08;Defining Query Methods&#xff09;来做 CRUD 操作&#xff0c;这一课时我将围绕这个内容来详细讲解。 在工作中&#xff0c;你是否经常为方法名的语义、命名规范而发愁&#xff1f;是否要为不同的查询条件写…

大模型微调学习

用好大模型的层次&#xff1a;1. 提示词工程(prompt engineering); 2. 大模型微调(fine tuning)为什么要对大模型微调&#xff1a; 1. 大模型预训练成本非常高&#xff1b; 2. 如果prompt engineering的效果达不到要求&#xff0c;企业又有比较好的自有数据&#xff0c;能够通过…

IOS17 轻松签全能签还能不能用?多开能否使用?升级后微信底栏消失怎么办?BY:后厂村路灯

从iphone15还没出就有小伙伴们追着问&#xff0c; 到现在也有人一直再问iOS17能不能用&#xff0c;看来换手机的人很多呀。 这里统一回答一下&#xff1a;“iOS17苹果签名可以用&#xff0c;多开也可以用”但是还是有些地方注意。 如果你是16系统直接升级刀17就可以&#xff…

20.1CubeMx配置FMC控制SDRAM【W9825G6KH-6】

本文使用stm32h723zgt6的fmc驱动sdram&#xff0c;实现内存扩展 sdram型号W9825G6KH-6 原理图&#xff1a; MCU引脚与SDRAM对应关系 引脚说明&#xff1a; SDRAM引脚&#xff1a; DQ[15:0]:数据线&#xff1b;数据位宽16 A[12:0]:地址线&#xff1b;行地址A[0:12]&#xff…

10月13日丨第十六届智慧城市大会《实景三维技术创新与应用》论坛日程抢先看!

第十六届智慧城市大会 智慧城市是数字中国、智慧社会的核心载体&#xff0c;是数字时代城市发展的高级形态。由中国服务贸易协会中国测绘学会、中国遥感委员会主办的第十六届智慧城市大会&#xff0c;将以“数实融合开放创新智引未来为主题&#xff0c;邀请行业主管单位和智慧…