C语言(字符串函数)
这章的内容记得引用<string.h>头文件
目录
1.strlen()
2.strcat()
3.strncat()
4.strcmp()
5.strncmp()
6.strcpy()
7.strncpy()
8.sprintf()
8.strchr()
9.strpbrk()
10.strrchr()
11.strstr()
1.strlen()
用于统计字符串的长度(不包含末尾的空字符)
size_t strlen(const char * s);
该函数返回s字符串中的字符数,不包括末尾的空字符
2.strcat()
用于拼接字符串。该函数把第二个字符串的备份附加在第一个字符串末尾,并把拼接后形成的新字符串作为第一个字符串,第二个字符串不变。
char *strcat(char * restrict s1,const char * restrict s2);
该函数把s2指向的字符串拷贝至s1指向的字符串末尾。S2字符串的第一个字符将覆盖s1字符串末尾的空字符。该函数返回s1
3.strncat()
char *strcat(char * restrict s1,const char * restrict s2,size_t n);
该函数把s2字符串中的n个字符拷贝至s1字符串末尾。S2字符串的第一个字符将覆盖s1字符串末尾的空字符
strcat()函数无法检查第一个数组是否能容纳第二个字符串,如果分配给第一个数组的空间不够大,多出来的字符溢出到相邻存储单元时就会出问题,而strncat()会在strcat()的基础上,多添加了第三个参数,进行拷贝字符数量限制
比如
4.strcmp()
int strcmp(const char * s1,const char * s2);
进行字符串作比较,第一个参数和第二个参数字符串参数相同,返回0。如果在字母表中第一个字符串为主第二个字符串前面(ASCII码),返回负数(相当于 第二个参数 - 第一个参数),反之则为正.返回类型都是1或-1
5.strncmp()
int strcmp(const char * s1,const char * s2,size_t n);
该函数的作用和strcmp()类似,不同的是,该函数在比较n个字符后或遇到第一个空字符停止
strcmp()函数 比较的是字符串,不是字符,所以比如“Apples”和”Ac“。如果第一个元素相同,则比较第二个元素
对于strcmp()函数我们的关注点只需要看在它的值是否是零和非零就可以了
不相等返回的就是-1或1
6.strcpy()
char *strcpy(char * restrict s1,const char * restrict s2);
该函数把s2指向的字符串(包括空字符)拷贝至s1指向的位置,返回值是s1
将第二个参数的字符拷贝,到第一个参数中。第一个参数叫目标字符串,第二个参数叫源字符串
strcpy()返回类型是 char *,该函数返回的是第一个参数的值(第一个字符的地址)
还有需要注意,strcpy()第一个参数不必指向数组的开始。下面我们在来看个例子
7.strncpy()
char *strcpy(char * restrict s1,const char * restrict s2,size_t n);
该函数把s2指向的字符串(包括空字符)拷贝至s1指向的位置,拷贝的字符数不超过n,返回值是s1。该函数不会拷贝空字符后面的字符,如果源字符串的字符少于n个,目标字符串就以拷贝的空字符结尾,但如果源字符串有n个或超过n个字符,就不会拷贝空字符
strcpy和strcat都有同样的问题,他们都不能检查目标空间是否能容纳源字符串的副本。而strncpy()的第三个参数指明可拷贝的最大字符数,
while(i < LIM && s_gets(temp,SIZE))
{
if(temp[0] != 'q') printf("%s doesn't begin with q!\n",temp);
else{
strncpy(qwords[i],temp,TARGSIZE-1);
qwords[i][TARGSIZE-1] = '\0';
i++;
}
}
我们重点讲解下这段代码,首先temp是个临时存储的字符串的变量,然后对这个变量进行判断,如果不是以q开头,提示错误,重新输入。只有当正确满5个以后才能推出while循环。
strncpy(qwords[i],temp,TARGSIZE-1);
这行代码把temp拷贝到qwords,但只会拷贝6个字符,最后一个存储'\0'
qwords[i][TARGSIZE-1] = '\0';
8.sprintf()
int sprintf(char *buffer, const char *format, [argument]...)
这个函数声明在stdio.h。该函数和printf()类似,但是它把数据写入字符串,而不是打印到显示器上。因此,该函数可以把多个元素组合成一个字符串。Sprintf()第一个参数是目标字符串的地址,第二和第三和printf一样
在vs中使用sprintf和scanf记得开头要加个
#define _CRT_SECURE_NO_WARNINGS
8.strchr()
Char *strchr(const char * s,int c);
如果s字符串包含c字符串,该函数返回指向s字符串首次出现的c字符的指针(末尾的空字符也字符串的一部分),如果找不到就返回空指针
9.strpbrk()
Char *strpbrk(const char * s1,const char * s2);
如果s1字符中包含s2字符串中的任意字符,该函数返回指向s1字符串首位置的指针,如果没找到,返回空字符
10.strrchr()
Char *strrchr(const char *s,char c);
该函数返回指向s字符串中c字符的最后一次出现的位置(末尾的空字符也是字符串的一部分)。如果未找到c字符,则返回空字串
11.strstr()
Char * strstr(const char * s1,const char * s2)
该函数返回指向s1字符串中s2字符串中首次出现的受位置,如果未找到,则返回空指针
好了朋友们我们今天的内容到这就结束了,今天的内容到这里就结束了,如果有啥不会的朋友记得论坛里面提问哈~
如果朋友你感觉文章的内容对你有帮助,可以点赞,关注文章和专栏以及关注我哈,嘿嘿嘿我会定期更新文章的,谢谢朋友你的支持哈
相关文章:

C语言(字符串函数)
这章的内容记得引用<string.h>头文件 目录 1.strlen() 2.strcat() 3.strncat() 4.strcmp() 5.strncmp() 6.strcpy() 7.strncpy() 8.sprintf() 8.strchr() 9.strpbrk() 10.strrchr() 11.strstr() 1.strlen() 用于统计字符串的…...

Maxwell工作流程详解
要介绍maxwell的工作原理,首先需要讲一下mysql主从复制的原理 mysql主从复制原理: 如上图,左边是master主节点,右边是slave从节点 工作流程: 1.往主节点mysql的数据库中写入数据,产生数据变化,…...

13- EM算法与GMM高斯混合 (聚类算法) (算法)
最大期望算法(EM算法) ,曾入选“数据挖掘十大算法”中,是最常见的隐变量估计方法,在机器学习中有极为广泛的用途,例如常被用来学习高斯混合模型的参数。EM算法是在概率模型中寻找参数最大似然估计或者最大后验估计的算法ÿ…...
【新】华为OD机试 - 二叉树层次遍历(Python)| 刷完获取OD招聘渠道
二叉树层次遍历 题目 有一棵二叉树 每一个节点用一个大写字母标识 最多26个节点 现有两组字母 分别表示后序遍历(左孩子指向右孩子指向父节点) 和中序遍历(左孩子指向父节点指向右孩子) 请输出层次遍历的结果 输入 输入为两个字符串 分别为二叉树的后序遍历和中序遍历结…...

工作记录------@Accessors(chain = true)引起的BUG,Excel导入时获取不到值
工作记录------Accessors(chain true)引起的BUG,Excel导入时获取不到值 如题所示 背景:在进行文件excel文件导入时,发现实体类获取到的属性值都为null。 框架:com.alibaba.excel 2.2.0的版本。 结论:首先说下结论 如…...

JavaEE-HTTP协议(二)
目录HTTP请求的方法GET方法POST 方法其他方法“报头”User-AgentRefererCookieHTTP响应200 OK404 Not Found403 Forbidden405 Method Not Allowed500 Internal Server Error504 Gateway Timeout302 Move temporarily301 Moved PermanentlyHTTP请求的方法 GET方法 GET 是最常用…...
代理的基本原理和多线程的基本原理
目录爬虫代理常见代理多线程并发和并行Python中的多进程和多线程爬虫时我们不到一杯茶的功夫就出现了403.打开网页一看会说您的IP访问频率太高,出现这种情况是因为网站采取了一些反爬虫措施,限制某个IP在一定时间内的请求次数,如果超过一定的…...

T38,数的递归
描述 输入一棵节点数为 n 二叉树,判断该二叉树是否是平衡二叉树。 在这里,我们只需要考虑其平衡性,不需要考虑其是不是排序二叉树 平衡二叉树(Balanced Binary Tree),具有以下性质:它是一棵空…...
QT+ OpenGL 变换
文章目录QT OpenGL变换向量的运算矩阵矩阵与向量相乘代码实现QT OpenGL 本篇完整工程见gitee:QTOpenGL 对应点的tag,由turbolove提供技术支持,您可以关注博主或者私信博主。 变换 我们需要改变物体的位置 现有解决办法(每一帧,…...

【算法】前缀和
作者:指针不指南吗 专栏:算法篇 🐾要学会在纸上打草稿,这个很重要🐾 文章目录1.什么是前缀和?2.怎么求前缀和?3.前缀和有什么用?4.进阶二维:矩阵和前缀和 主打一个记公式 1.什么是前…...

《Redis实战篇》七、Redis消息队列
7.1 Redis消息队列-认识消息队列 什么是消息队列:字面意思就是存放消息的队列。最简单的消息队列模型包括3个角色: 消息队列:存储和管理消息,也被称为消息代理(Message Broker)生产者:发送消息…...

android组件化
学习流程:1.开源最佳实践:Android平台页面路由框架ARouter-阿里云开发者社区 (aliyun.com)2.中文ARouter使用API:https://github.com/alibaba/ARouter/blob/master/README_CN.md3.看当前文档后面的代码4.这是通俗易懂的文章:https…...
华为OD机试真题Python实现【特异性双端队列】真题+解题思路+代码(20222023)
🔥系列专栏 华为OD机试(Python)真题目录汇总华为OD机试(JAVA)真题目录汇总华为OD机试(C++)真题目录汇总华为OD机试(JavaScript)真题目录汇总文章目录 🔥系列专栏题目输入输出示例一输入输出解题思路核心知识点Python 代码实现代码运行结果版权说明<...
24.架构能力
文章目录24. 架构能力24.1 Competence of Individuals: Duties, Skills, and Knowledge of Architects 个人能力:架构师的职责、技能和知识24.2 Competence of a Software Architecture Organization 软件架构组织的能力24.3 Summary 小结24.4 For Further Reading …...

前端原生 CSS 跑马灯效果,无限轮播(横竖版本,带渐变遮罩,简单实用)
一、横版跑马灯 <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta http-equiv"X-UA-Compatible" content"IEedge"><meta name"viewport" content"widthdevice-wid…...

4.8 注解与自定义注解
文章目录1.概述2.注解的分类2.1 JDK注解2.2 元注解2.2.1 Target ElementType…2.2.2 Retention RetentionPolicy…3 自定义注解1.概述 在注解刚出现时,曾受到过好多程序员的鄙夷,觉得这就是多此一举的操作; 但随着时间的推移,越…...

webpack 的热更新是如何做到的?原理是什么?
Hot Module Replacement,简称 HMR,在不需要刷新整个页面的同时更新模块,能够提升开发的效率和体验。热更新时只会局部刷新页面上发生了变化的模块,同时可以保留当前页面的状态,比如复选框的选中状态等。 在 webpack 中…...

嵌入式ARM设计编程(一) 简单数据搬移
文章和代码已归档至【Github仓库:hardware-tutorial】,需要的朋友们自取。或者公众号【AIShareLab】回复 嵌入式 也可获取。 一、实验目的 熟悉实验开发环境,掌握简单ARM汇编指令的使用方法。 二、实验环境 硬件:PC机 软件&am…...

【Selenium】十分钟手把手带你学会WebDriver API
目录 1、定位元素【8种】 2、操作测试对象 3、添加等待 4、弹窗类型 5、浏览器的操作 6、键盘事件 7、选择框 8、上传文件 1、定位元素【8种】 元素定位是自动化测试的核心,想要去操作一个对象,第一步就是需要我们先去识别这个对象。每个对象就会…...

3DMAX高级弯曲插件使用教程
3dMax高级弯曲插件是对3dmax原生“弯曲(Bend)”修改器的一个增强,给用户更多控制弯曲修改器的参数设置,它让用户输入宽度,插件脚本将移动中心以获得正确的宽度。 主要特性: - 使用智能捕捉捕捉到自定义网格…...

MPNet:旋转机械轻量化故障诊断模型详解python代码复现
目录 一、问题背景与挑战 二、MPNet核心架构 2.1 多分支特征融合模块(MBFM) 2.2 残差注意力金字塔模块(RAPM) 2.2.1 空间金字塔注意力(SPA) 2.2.2 金字塔残差块(PRBlock) 2.3 分类器设计 三、关键技术突破 3.1 多尺度特征融合 3.2 轻量化设计策略 3.3 抗噪声…...
OpenLayers 可视化之热力图
注:当前使用的是 ol 5.3.0 版本,天地图使用的key请到天地图官网申请,并替换为自己的key 热力图(Heatmap)又叫热点图,是一种通过特殊高亮显示事物密度分布、变化趋势的数据可视化技术。采用颜色的深浅来显示…...

Flask RESTful 示例
目录 1. 环境准备2. 安装依赖3. 修改main.py4. 运行应用5. API使用示例获取所有任务获取单个任务创建新任务更新任务删除任务 中文乱码问题: 下面创建一个简单的Flask RESTful API示例。首先,我们需要创建环境,安装必要的依赖,然后…...
React hook之useRef
React useRef 详解 useRef 是 React 提供的一个 Hook,用于在函数组件中创建可变的引用对象。它在 React 开发中有多种重要用途,下面我将全面详细地介绍它的特性和用法。 基本概念 1. 创建 ref const refContainer useRef(initialValue);initialValu…...

【JavaEE】-- HTTP
1. HTTP是什么? HTTP(全称为"超文本传输协议")是一种应用非常广泛的应用层协议,HTTP是基于TCP协议的一种应用层协议。 应用层协议:是计算机网络协议栈中最高层的协议,它定义了运行在不同主机上…...

【人工智能】神经网络的优化器optimizer(二):Adagrad自适应学习率优化器
一.自适应梯度算法Adagrad概述 Adagrad(Adaptive Gradient Algorithm)是一种自适应学习率的优化算法,由Duchi等人在2011年提出。其核心思想是针对不同参数自动调整学习率,适合处理稀疏数据和不同参数梯度差异较大的场景。Adagrad通…...

STM32F4基本定时器使用和原理详解
STM32F4基本定时器使用和原理详解 前言如何确定定时器挂载在哪条时钟线上配置及使用方法参数配置PrescalerCounter ModeCounter Periodauto-reload preloadTrigger Event Selection 中断配置生成的代码及使用方法初始化代码基本定时器触发DCA或者ADC的代码讲解中断代码定时启动…...

全球首个30米分辨率湿地数据集(2000—2022)
数据简介 今天我们分享的数据是全球30米分辨率湿地数据集,包含8种湿地亚类,该数据以0.5X0.5的瓦片存储,我们整理了所有属于中国的瓦片名称与其对应省份,方便大家研究使用。 该数据集作为全球首个30米分辨率、覆盖2000–2022年时间…...
【ROS】Nav2源码之nav2_behavior_tree-行为树节点列表
1、行为树节点分类 在 Nav2(Navigation2)的行为树框架中,行为树节点插件按照功能分为 Action(动作节点)、Condition(条件节点)、Control(控制节点) 和 Decorator(装饰节点) 四类。 1.1 动作节点 Action 执行具体的机器人操作或任务,直接与硬件、传感器或外部系统…...
spring:实例工厂方法获取bean
spring处理使用静态工厂方法获取bean实例,也可以通过实例工厂方法获取bean实例。 实例工厂方法步骤如下: 定义实例工厂类(Java代码),定义实例工厂(xml),定义调用实例工厂ÿ…...