(超详细)字符函数和字符串函数【上】
前言
1.求字符串长度函数
strlen函数
我们要求一个字符串函数的长度,strlen通常是我们的第一选择,它被包含在string.h头文件中,我们以下要介绍的字符函数和字符串函数都被包含在这个头文件中,这个函数的声明为:
size_t strlen ( const char * str );
为什么它的返回类型是size_t呢,首先我们要知道size_t是无符号整型类型,因为我们字符的长度不可能是负数,所以我们的返回值选择用无符号整型,那么这个函数内部是如何实现的呢?
我们写一段代码演示:
#include<stdio.h>
#include<string.h>
int main()
{char arr[] = "abcdef";size_t sz = strlen(arr);printf("%zd\n", sz);return 0;
}
我们来看结果:
一个字符串的末尾隐藏着一个\0,strlen就是通过一个一个字符记数,找到\0后就停下然后返回那个记数的值,画图演示:
strlen函数从a开始走,只要没遇到\0就一直往后走,走一个字符记数加一,直到遇到\0时,他就停止向后走,函数工作结束并返回那个记数的值。
注意事项:
总结:strlen函数是一个求字符串长度的函数,内部的工作原理是只要不遇到\0就一直向后走并记数,遇到\0就停下。
2.长度不受限制的字符串函数
strcpy函数
strcpy是用来将一个字符串复制到另一个数组的函数,函数声明为:
char* strcpy(char * destination, const char* sourse)
因为我们要从一个数组中复制字符串到另一个数组中,所以用两个字符指针接收它们的首地址,sourse指向的函数是不需要改变它里面的值的,所以我们用const来修饰它,防止有人改变它的值,增加程序的鲁棒性,在复制完内容后,我们把接收了字符串的那个数组的首地址返回,代码演示:
int main()
{char arr1[] = "abcdef";char arr2[20] = { 0 };strcpy(arr2, arr1);printf("%s\n", arr2);return 0;
}
我们来看一下结果:
使用strcpy函数,arr1数组中的字符串很轻松就被复制到了arr2数组中,但是函数也有一些注意事项需要遵守,否则会出现一些无法预知的问题 。
注意事项:
1.源数组字符串必须以\0结尾。
2.目标数组空间必须足够大,能够放得下源字符串的内容。
3.目标空间必须可变。
总结:strcpy是一个复制字符串的函数
stract函数
stract函数的功能是将一个字符串复制到另一个字符串的结尾,使得到字符内容的字符串变长,函数声明为:
char * strcat ( char * destination, const char * source );
它的函数声明与strcpy函数一样,就不过多介绍了,假设我们要进行这样的操作,用代码演示:
int main()
{char arr1[20] = "abcdrf";char arr2[] = "wed";strcat(arr1, arr2);printf("%s\n", arr1);return 0;
}
代码中表示我们要将arr2数组中的内容放到arr1数组的结尾:
我相信通过代码的演示大家已经了解了strct函数的使用,这里还有使用此函数的一些注意事项。
注意事项:
strcmp函数
strcmp是字符串比较函数,使用它可以对两个字符串比较,在排序等情况中可以使用此函数,我们来看看这个函数的声明吧:
int strcmp ( const char * str1, const char * str2 );
在介绍它的函数声明之前,我们先介绍这个函数的工作原理。我们向strcmp函数放入两个数组的首地址 ,它会对两个字符串的字符进行比较,如果相等就往后比,只要有一位分出大小,就会分出大小,假设我们有一个字符串abcdef和另一个abcq使用strcmp函数进行比较前三位都是abc,所以会往下比,当比到第四位时,是d和q进行比较,c的ascall码为99,q的ascall码为112,当有一位字符比出大小时,就会判定abcq比abcdef大,因为abcdef在前,所以函数判定的结果是小于,返回小于0的数字,如果比到最后,两个字符串都一样,则返回0,如果前面那个字符串比后面那个字符串大,则返回一个大于0的数字。
现在我们再看函数声明,也不难理解这个函数的两个参数是指针,用来接收两个数组的首地址,因为只要比较它们的值,不需要改变它们的值,所以用const修饰。
例如我们要比较两个数组中的字符串,我们用代码演示:
int main()
{char arr1[20] = "abcdrf";char arr2[] = "abcq";int ret=strcmp(arr1, arr2);printf("%d\n", ret);return 0;
}
看结果怎么样:
函数判定abcdef比abcq小,所以返回了一个小于0的数字。
标准规定:
相关文章:

(超详细)字符函数和字符串函数【上】
前言 C 语言中对字符和字符串的处理很是频繁,但是 C 语言本身是没有字符串类型的,字符串通常放在 常量字符串 中或者 字符数组 中。 字符串常量 适用于那些对它不做修改的字符串函数 . 1.求字符串长度函数 strlen函数 我们要求一个字符串函数的长度…...

AUS GLOBAL 荣获 Brokersview 颁奖盛典多项殊荣
2024年1月31日在迪拜 Sheikh Zayed Rd - Trade Centre - Trade Centre 1 举行的 Brokersview 颁奖盛典上,AUS GLOBAL(澳洲环球)再次展现了其在金融行业的卓越实力,并荣获多项殊荣。 AUS GLOBAL 作为一家全球领先的金融服务提供商…...
Spring Aop 实现对mapper层入参进行重新赋值
需求描述: 需要对mapper查询的入参的某个属性值进行特殊处理后查询 不影响原来业务且方便扩展维护 1,自定义注解 import java.lang.annotation.*;/*** 针对 mapper层入参 按照一定规则进行特殊处理重新赋值*/ Target(ElementType.METHOD) Retention(Ret…...

朗读亭主要作用有哪些?
朗读亭的主要作用有以下几个方面: 1. 提供朗读服务:朗读亭是一个专门的场所,提供给人们朗读的环境和场地。人们可以在朗读亭中选择自己喜欢的书籍或文章,并通过朗读将其表达出来。这样可以帮助人们提高朗读能力,增强自…...

力扣:226. 翻转二叉树
226. 翻转二叉树 已解答 简单 相关标签 相关企业 给你一棵二叉树的根节点 root ,翻转这棵二叉树,并返回其根节点。 示例 1: 输入:root [4,2,7,1,3,6,9] 输出:[4,7,2,9,6,3,1]示例 2: 输入:…...

深入解析 JSONPath:从入门到精通
码到三十五 : 个人主页 在数据处理和交换领域,JSON已经成为了一种广泛使用的数据格式, 如何有效地查询和操作这些数据也变得越来越重要。在这种情况下,JSONPath 应运而生,成为了一种在JSON数据中定位和提取信息的强大工…...
Python算法设计与分析期末
Python算法设计与分析期末通常涉及对算法基础知识的理解和应用,包括但不限于以下几个方面: 算法基础:了解算法的定义、特性(确定性、有穷性、可行性等)以及算法的分类。 时间复杂度和空间复杂度:学会分析算…...

pg_lakehouse 与 datafusion
原理分析 pg_lakehouse 是 ParadeDB 推出的一个开源插件,支持对多种数据湖里的数据做分析计算。它的出现,使得 Postgres 能够像访问本地数据一样轻松访问 S3 等对象存储,轻松访问 Delta Lake 上的表格,具备数据湖分析能力。 pg_…...

基于51单片机的酒精浓度检测仪的设计
一.硬件方案 硬件部分为利用MQ3气敏传感器测量空气中酒精浓度,并转换为电压信号,经A/D转换器转换成数字信号后传给单片机系统,由单片机及其相应外围电路进行信号的处理,显示酒精浓度值以及超阈值声光报警。电路主要由51单片机最小…...

重生之 SpringBoot3 入门保姆级学习(02、打包部署)
重生之 SpringBoot3 入门保姆级学习(02、打包部署) 1.6 打包插件1.7 测试 jar 包1.8 application.properties 的相关配置 1.6 打包插件 官网链接 https://docs.spring.io/spring-boot/docs/current/reference/html/getting-started.html#getting-starte…...
Java-常用模块
文章目录 日期时间stream流 日期时间 jdk8新的日期时间类 解析和格式化DateTimeFormatter类(线程安全) LocalDateTime类 Instant类 Duration类String time "2013-02-11 11:00:00";DateTimeFormatter dateTimeFormatter DateTimeFormatter.o…...
c++大作业 调整字幕的时间
作业及其需求 有时候人们能够下载一些感兴趣的视频但是发现并没有字幕,到字幕网站上查找到字幕文件,但是发现时间进度上不能完美配合,一个视频数据的例子来源于链接: BBC.巴塔哥尼亚:地球秘密乐园 https://www.aliyundrive.com/s/LmF2sgrQzMu/folder/612af030c6fa4bf4b7c…...
Nmap使用方法
Nmap 介绍 Nmap是一个免费开放的网络扫描和嗅探工具包,也叫网络映射器(Network Mapper)。该工具其基本功能有三个,一是探测一组主机是否在线;其次是扫描主机端口,嗅探所提供的网络服务;三是可…...

任务3.1:采用面向对象方式求三角形面积
面向对象编程(OOP)是一种将现实世界中的实体抽象为对象,并通过类和对象来模拟现实世界中的行为和属性的编程范式。在本实战任务中,我们通过创建一个Triangle类来模拟现实世界中的三角形,并使用面向对象的方法来求解三角…...
解读《互联网政务应用安全管理规定》网络和数据安全中的身份认证和审计合规建设
为保障互联网政务应用安全,由中央网络安全和信息化委员会办公室、中央机构编制委员会办公室、工业和信息化部、公安部制定的《互联网政务应用安全管理规定》近日印发,自2024年7月1日起施行。 规定共8章,包括总则、开办和建设、信息安全、网络…...

HTML-JavaWeb
目录 1.标题排版 2.标题样式 编辑 编辑 小结 3.超链接 4.正文排版 编辑编辑编辑5.正文布局 6.表格标签 7.表单标签 8.表单项标签 1.标题排版 ● 图片标签 :< img> src:指定图像的ur1(绝对路径/相对路径) width:图像的宽度(像素/相对于父元素的百…...

数组-检查数组内是否存在和为7的倍数的子序列
一、题目描述 二、解题思路 这里首先要分辨清楚是子序列还是子数组 原数组:[1,2,3,4,5] 子序列:元素和元素之间相对位置保持不变,但是在原数组中不一定连续,如:[1,3,4]; 子数组:元素元素之间保…...

【图像处理与机器视觉】图像处理概述与像素
什么是数字图像处理 改善图像信息,便于作出解释 方便对图像传输,储存,方便机器理解 什么是数字图像 (1)模拟图像:连续二维函数 f(x,y)表示,其中 x…...
虚函数的性能消耗到底在哪?
虚函数的性能消耗 聊到虚函数的性能开销,大家的第一反应肯定是间接调用上,何为间接调用? 当调用一个虚函数时,实际执行的函数版本是在运行时通过虚函数表(virtualtable)查找确定的。这个查找过程是一个间接…...

Visual Studio 的使用
目录 1. 引言 2. 安装和配置 2.1 系统要求 2.2 安装步骤 2.3 初次配置 3. 界面介绍 3.1 菜单栏和工具栏 3.2 解决方案资源管理器 3.3 编辑器窗口 3.4 输出窗口 3.5 错误列表 3.6 属性窗口 4. 项目管理 4.1 创建新项目 4.2 导入现有项目 4.3 项目属性配置 5. 代…...

大型活动交通拥堵治理的视觉算法应用
大型活动下智慧交通的视觉分析应用 一、背景与挑战 大型活动(如演唱会、马拉松赛事、高考中考等)期间,城市交通面临瞬时人流车流激增、传统摄像头模糊、交通拥堵识别滞后等问题。以演唱会为例,暖城商圈曾因观众集中离场导致周边…...

visual studio 2022更改主题为深色
visual studio 2022更改主题为深色 点击visual studio 上方的 工具-> 选项 在选项窗口中,选择 环境 -> 常规 ,将其中的颜色主题改成深色 点击确定,更改完成...
vue3 字体颜色设置的多种方式
在Vue 3中设置字体颜色可以通过多种方式实现,这取决于你是想在组件内部直接设置,还是在CSS/SCSS/LESS等样式文件中定义。以下是几种常见的方法: 1. 内联样式 你可以直接在模板中使用style绑定来设置字体颜色。 <template><div :s…...
linux 错误码总结
1,错误码的概念与作用 在Linux系统中,错误码是系统调用或库函数在执行失败时返回的特定数值,用于指示具体的错误类型。这些错误码通过全局变量errno来存储和传递,errno由操作系统维护,保存最近一次发生的错误信息。值得注意的是,errno的值在每次系统调用或函数调用失败时…...

WordPress插件:AI多语言写作与智能配图、免费AI模型、SEO文章生成
厌倦手动写WordPress文章?AI自动生成,效率提升10倍! 支持多语言、自动配图、定时发布,让内容创作更轻松! AI内容生成 → 不想每天写文章?AI一键生成高质量内容!多语言支持 → 跨境电商必备&am…...

项目部署到Linux上时遇到的错误(Redis,MySQL,无法正确连接,地址占用问题)
Redis无法正确连接 在运行jar包时出现了这样的错误 查询得知问题核心在于Redis连接失败,具体原因是客户端发送了密码认证请求,但Redis服务器未设置密码 1.为Redis设置密码(匹配客户端配置) 步骤: 1).修…...
作为测试我们应该关注redis哪些方面
1、功能测试 数据结构操作:验证字符串、列表、哈希、集合和有序的基本操作是否正确 持久化:测试aof和aof持久化机制,确保数据在开启后正确恢复。 事务:检查事务的原子性和回滚机制。 发布订阅:确保消息正确传递。 2、性…...

MacOS下Homebrew国内镜像加速指南(2025最新国内镜像加速)
macos brew国内镜像加速方法 brew install 加速formula.jws.json下载慢加速 🍺 最新版brew安装慢到怀疑人生?别怕,教你轻松起飞! 最近Homebrew更新至最新版,每次执行 brew 命令时都会自动从官方地址 https://formulae.…...

从物理机到云原生:全面解析计算虚拟化技术的演进与应用
前言:我的虚拟化技术探索之旅 我最早接触"虚拟机"的概念是从Java开始的——JVM(Java Virtual Machine)让"一次编写,到处运行"成为可能。这个软件层面的虚拟化让我着迷,但直到后来接触VMware和Doc…...

门静脉高压——表现
一、门静脉高压表现 00:01 1. 门静脉构成 00:13 组成结构:由肠系膜上静脉和脾静脉汇合构成,是肝脏血液供应的主要来源。淤血后果:门静脉淤血会同时导致脾静脉和肠系膜上静脉淤血,引发后续系列症状。 2. 脾大和脾功能亢进 00:46 …...