当前位置: 首页 > news >正文

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&#xff08;&#xff09; 2.strcat() 3.strncat() 4.strcmp() 5.strncmp() 6.strcpy() 7.strncpy() 8.sprintf() 8.strchr() 9.strpbrk() 10.strrchr() 11.strstr() 1.strlen&#xff08;&#xff09; 用于统计字符串的…...

Maxwell工作流程详解

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

13- EM算法与GMM高斯混合 (聚类算法) (算法)

最大期望算法(EM算法) &#xff0c;曾入选“数据挖掘十大算法”中&#xff0c;是最常见的隐变量估计方法&#xff0c;在机器学习中有极为广泛的用途&#xff0c;例如常被用来学习高斯混合模型的参数。EM算法是在概率模型中寻找参数最大似然估计或者最大后验估计的算法&#xff…...

【新】华为OD机试 - 二叉树层次遍历(Python)| 刷完获取OD招聘渠道

二叉树层次遍历 题目 有一棵二叉树 每一个节点用一个大写字母标识 最多26个节点 现有两组字母 分别表示后序遍历(左孩子指向右孩子指向父节点) 和中序遍历(左孩子指向父节点指向右孩子) 请输出层次遍历的结果 输入 输入为两个字符串 分别为二叉树的后序遍历和中序遍历结…...

工作记录------@Accessors(chain = true)引起的BUG,Excel导入时获取不到值

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

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访问频率太高&#xff0c;出现这种情况是因为网站采取了一些反爬虫措施&#xff0c;限制某个IP在一定时间内的请求次数&#xff0c;如果超过一定的…...

T38,数的递归

描述 输入一棵节点数为 n 二叉树&#xff0c;判断该二叉树是否是平衡二叉树。 在这里&#xff0c;我们只需要考虑其平衡性&#xff0c;不需要考虑其是不是排序二叉树 平衡二叉树&#xff08;Balanced Binary Tree&#xff09;&#xff0c;具有以下性质&#xff1a;它是一棵空…...

QT+ OpenGL 变换

文章目录QT OpenGL变换向量的运算矩阵矩阵与向量相乘代码实现QT OpenGL 本篇完整工程见gitee:QTOpenGL 对应点的tag&#xff0c;由turbolove提供技术支持&#xff0c;您可以关注博主或者私信博主。 变换 我们需要改变物体的位置 现有解决办法&#xff08;每一帧&#xff0c…...

【算法】前缀和

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

《Redis实战篇》七、Redis消息队列

7.1 Redis消息队列-认识消息队列 什么是消息队列&#xff1a;字面意思就是存放消息的队列。最简单的消息队列模型包括3个角色&#xff1a; 消息队列&#xff1a;存储和管理消息&#xff0c;也被称为消息代理&#xff08;Message Broker&#xff09;生产者&#xff1a;发送消息…...

android组件化

学习流程&#xff1a;1.开源最佳实践&#xff1a;Android平台页面路由框架ARouter-阿里云开发者社区 (aliyun.com)2.中文ARouter使用API&#xff1a;https://github.com/alibaba/ARouter/blob/master/README_CN.md3.看当前文档后面的代码4.这是通俗易懂的文章&#xff1a;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 个人能力&#xff1a;架构师的职责、技能和知识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.概述 在注解刚出现时&#xff0c;曾受到过好多程序员的鄙夷&#xff0c;觉得这就是多此一举的操作&#xff1b; 但随着时间的推移&#xff0c;越…...

webpack 的热更新是如何做到的?原理是什么?

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

嵌入式ARM设计编程(一) 简单数据搬移

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

【Selenium】十分钟手把手带你学会WebDriver API

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

3DMAX高级弯曲插件使用教程

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

保姆级拆解:MIT-BEVFusion中Swin Transformer如何高效处理多相机图像(附代码逐行分析)

多相机BEV感知中的Swin Transformer实战&#xff1a;从原理到MIT-BEVFusion代码精要 在自动驾驶感知系统中&#xff0c;如何高效处理多相机输入并构建统一的鸟瞰视图&#xff08;BEV&#xff09;表征一直是核心挑战。本文将深入探讨Swin Transformer在多相机BEV感知中的创新应用…...

Neeshck-Z-lmage_LYX_v2实战教程:异常友好提示机制与错误定位指南

Neeshck-Z-lmage_LYX_v2实战教程&#xff1a;异常友好提示机制与错误定位指南 1. 引言&#xff1a;当绘画工具变得“会说话” 想象一下&#xff0c;你兴致勃勃地打开一个AI绘画工具&#xff0c;输入了一段精心构思的描述&#xff0c;点击生成&#xff0c;然后……页面卡住了。…...

工业协议通信开发实战:lib60870开源库完全指南

工业协议通信开发实战&#xff1a;lib60870开源库完全指南 【免费下载链接】lib60870 Official repository for lib60870 an implementation of the IEC 60870-5-101/104 protocol 项目地址: https://gitcode.com/gh_mirrors/li/lib60870 在工业自动化领域&#xff0c;设…...

突破PDF文字识别困境:Umi-OCR开源工具的全流程解决方案

突破PDF文字识别困境&#xff1a;Umi-OCR开源工具的全流程解决方案 【免费下载链接】Umi-OCR Umi-OCR: 这是一个免费、开源、可批量处理的离线OCR软件&#xff0c;适用于Windows系统&#xff0c;支持截图OCR、批量OCR、二维码识别等功能。 项目地址: https://gitcode.com/Git…...

从QEMU仿真到真机烧录:用Yocto为ArmSoM-Sige7开发板定制RK3588镜像的完整流程

从QEMU仿真到真机烧录&#xff1a;用Yocto为ArmSoM-Sige7开发板定制RK3588镜像的完整流程 在嵌入式开发领域&#xff0c;能够快速验证软件栈的可行性并最终部署到真实硬件是每个开发者的核心诉求。本文将带你完整走通从虚拟仿真到实体部署的全链路&#xff0c;使用Yocto项目为搭…...

实战分享:如何用OmniPeek和TL-WDN7200H网卡高效抓取WiFi空口数据包(附信道选择技巧)

实战分享&#xff1a;如何用OmniPeek和TL-WDN7200H网卡高效抓取WiFi空口数据包&#xff08;附信道选择技巧&#xff09; 在无线网络分析和安全研究领域&#xff0c;空口数据包捕获是诊断问题、优化性能和发现安全隐患的基础技能。不同于有线网络抓包&#xff0c;无线环境中的信…...

阴阳师自动化脚本百鬼夜行智能控制指南:从配置到精通

阴阳师自动化脚本百鬼夜行智能控制指南&#xff1a;从配置到精通 【免费下载链接】OnmyojiAutoScript Onmyoji Auto Script | 阴阳师脚本 项目地址: https://gitcode.com/gh_mirrors/on/OnmyojiAutoScript 阴阳师自动化脚本是一款强大的游戏辅助工具&#xff0c;专为提升…...

PyTorch 2.8镜像实战案例:自媒体创作者批量生成短视频封面图工作流

PyTorch 2.8镜像实战案例&#xff1a;自媒体创作者批量生成短视频封面图工作流 1. 场景痛点与解决方案 短视频创作者每天面临的最大挑战之一&#xff0c;就是需要为每个视频制作吸引眼球的封面图。传统方式要么依赖设计师&#xff08;成本高、周期长&#xff09;&#xff0c;…...

AI时代求职必懂的8大核心技术陷阱,最强就业指南

AI求职八股文大变革&#xff1a;不会这些新技术&#xff0c;下一个淘汰的就是你&#xff01;&#xff08;100个夺命真题解析&#xff09;&#x1f480; 警告&#xff1a; 如果你还在背那些“HashMap底层原理”和“三次握手四次挥手”&#xff0c;请立刻停止&#xff01;AI面试官…...

nli-distilroberta-base商业应用:广告文案与目标人群画像的逻辑契合度评估

nli-distilroberta-base商业应用&#xff1a;广告文案与目标人群画像的逻辑契合度评估 1. 项目概述 nli-distilroberta-base是基于DistilRoBERTa模型的自然语言推理(NLI)服务&#xff0c;专门用于分析两段文本之间的逻辑关系。这个轻量级模型经过蒸馏训练&#xff0c;在保持R…...