C语言——字符函数和字符串函数(一)
📝前言:
这篇文章对我最近学习的有关字符串的函数做一个总结和整理,主要讲解字符函数和字符串函数(strlen,strcpy和strncpy,strcat和strncat)的使用方法,使用场景和一些注意事项(附上实例)
🎬个人简介:努力学习ing
📋个人专栏:C语言入门基础
🎀CSDN主页 愚润求学
🌄每日鸡汤:生活在自己的光里,不断吹饮内心的火焰
文章目录
- 一,字符分类函数
- 1,使用实例(islower)
- 二,字符转换函数
- 三,函数strlen
- 1,基本介绍
- 2,使用注意事项
- 四,strcpy和strncpy
- 1,strcpy
- 2,strncpy
- 五,strcat和strncat
- 1,strcat
- 2,strncat
一,字符分类函数
📋C语言里提供一系列的函数专门用于字符分类,便于我们**判断一个字符是属于什么类型的字符**👇🏻

如islower:
int islower(int c)
islower就会判断参数部分的c是否是小写字母(字符→ASCII值)
1,使用实例(islower)
●这些函数的使用方法非常类似,一下对其中的islower做使用的展示👇🏻
代码作用:用islower判断字符后,将小写的字母转换为大写,其他字符不变
#include<stdio.h>
#include<ctype.h>
int main()
{char str[] = "Test Islower.";int sz = sizeof(str) / sizeof(str[0]);for (int i = 0; i < sz; i++) //用for循环,因为一次只能判断一个字符{if (islower(str[i])) //判断是否为小写,小写就加入if语句{str[i] = str[i] - 32; //将小写转换为大写}putchar(str[i]); //输出字符}return 0;
}
输出结果👇🏻
二,字符转换函数
下面介绍两种可以实现大小写之间互相转化的函数👇🏻
1,int tolower(int c);将大写字母转换为小写字母
2,int toupper(int c);将小写字母转换为大写字母
在上一个用islower判断大小写后,我们是通过小写字符-32的形式来转化为大写字符的,这次我们使用toupper函数来实现转换👇🏻
#include<stdio.h>
#include<ctype.h>
int main()
{char str[] = "Test Islower.";int sz = sizeof(str) / sizeof(str[0]);for (int i = 0; i < sz; i++){if (islower(str[i])) {toupper(str[i]); //使用toupper函数}putchar(str[i]); }return 0;
}
输出结果👇🏻
三,函数strlen
用来计算字符串的长度
1,基本介绍
我们来看一下C语言官网对它的介绍👇🏻

●原文:C字符串的长度是由终止空字符决定:C字符串的长度等于字符串开头和终止字符之间的字符数(但不包括终止字符本身)
●通俗来讲就是:字符串开头到\0之前字符的个数
2,使用注意事项
🔍但是这也造成了strlen的“固执”,strlen只有遇到\0才会停止查找,否则就会一直查找
请看下面的代码👇🏻
#include<stdio.h>
#include<string.h>
int main()
{char arr1[] = "abcde";char arr2[] = { 'a','b','c','d','e'};printf("%d\n", strlen(arr1));printf("%d\n", strlen(arr2));return 0;
}
运行结果👇🏻
⭐结果不一样就是因为strlen在arr2的未知位置才找到了\0
arr1数组中存放的是:a b c d e \0程序自动在字符串后面补充了\0
arr2数组中存放的是:a b c d e没有\0,因此strlen会一直找\0找到才停止,输出结果 33 其实是一个随机值(刚好strlen在内存里找到了\0)
四,strcpy和strncpy
头文件:<string.h>
作用:复制字符串
1,strcpy
我们先来看strcmp👇🏻

函数原型:
char* strcpy(char* destination, const char* source);
●对重要的内容解读一下与数理:
1,原字符串必须以\0结尾,函数复制完\0以后就会停止
2,目标空间要足够大,要存放的下所要复制的字符串
3,目标空间必须可修改(比如:字符数组可以修改,但是,常量字符串就是不能修改的)
实例👇🏻

但是,如果源字符里有\0,则复制完\0就会停止👇🏻

2,strncpy
和strcpy的区别就是多了一个n→num(复制的字符的个数)
char* strncpy(char* destination, const char* source, size_t num);

●复制num个字符从源字符串到目标空间
●如果num>源字符串长度,则复制完源字符串后,目标后面追加0,直到num个
👇🏻

可以观察到:
num的限制就是刚好复制num个字符,并且没有更改目标空间原来后面的内容
五,strcat和strncat
头文件:<string.h>
作用:连接字符串
1,strcat

⭐提炼一下:
●源字符串必须以\0结尾,函数追加完\0以后就会停止
●从目标中的终止空字符串开始覆盖(目标字符串也必须以\0结尾,因为目标字符串的\0就是开始追加的位置,这个\0会被覆盖掉)
●目标空间要足够大(>(目标字符串+源字符串)的大小)
●目标空间必须可以修改
实例👇🏻

可见,源字符串中间有空字符也不会停止
2,strncat

⭐区别:
●从源字符串追加num个字符到目标字符串的末尾,追加完以后再追加一个\0
●如果num>源字符串长度,则只会将源字符串中\0之前的内容追加到目标字符串的末尾**
实例👇🏻

🌈我的分享也就到此结束啦🌈
要是我的分享也能对你的学习起到帮助,那简直是太酷啦!
若有不足,还请大家多多指正,我们一起学习交流!
📢公主,王子:点赞👍→收藏⭐→关注🔍
感谢大家的观看和支持!祝大家都能得偿所愿,天天开心!!!
相关文章:
C语言——字符函数和字符串函数(一)
📝前言: 这篇文章对我最近学习的有关字符串的函数做一个总结和整理,主要讲解字符函数和字符串函数(strlen,strcpy和strncpy,strcat和strncat)的使用方法,使用场景和一些注意事项&…...
15.Java程序设计-基于SSM框架的微信小程序校园求职系统的设计与实现
摘要: 本研究旨在设计并实现一款基于SSM框架的微信小程序校园求职系统,以提升校园求职流程的效率和便捷性。通过整合微信小程序平台和SSM框架的优势,本系统涵盖了用户管理、职位发布与搜索、简历管理、消息通知等多个功能模块,为…...
蓝桥杯航班时间
蓝桥杯其他真题点这里👈 //飞行时间 - 时差 已过去的时间1 //飞行时间 时差 已过去的时间2 //两个式子相加会发现 飞行时间 两段时间差的和 >> 1import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader;public cl…...
openEuler学习05-kernel升级
周末没事,尝试下openEuler的kernel升级 [rootlocalhost ~]# more /etc/os-release NAME"openEuler" VERSION"20.03 (LTS-SP3)" ID"openEuler" VERSION_ID"20.03" PRETTY_NAME"openEuler 20.03 (LTS-SP3)" ANSI_…...
Linux-centos上如何配置管理NFS服务器?
Linux/centos上如何配置管理NFS服务器? 1 NFS基础了解 NFS(Network File System)即文件操作系统;NFS允许网络中不同计算机相互之间共享资源。 1.1 NFS概述 1980年由SUN发展出来的在UNIX&Linux系统间实现文件共享的一种方法…...
自然语言处理第2天:自然语言处理词语编码
☁️主页 Nowl 🔥专栏 《自然语言处理》 📑君子坐而论道,少年起而行之 文章目录 一、自然语言处理介绍二、常见的词编码方式1.one-hot介绍缺点 2.词嵌入介绍说明 三、代码演示四、结语 一、自然语言处理介绍 自然语言处理…...
ES6中的Promise
Promise 是一种异步编程解决方案,Promise是一个容器,保存着将来才会执行的代码;从语法角度来说Promise是一个对象,可以用来获取异步操作的消息。异步操作,同步解决,避免了层层嵌套的回调函数,可…...
载入了名字空间‘htmltools’ 0.5.6,但需要的是>= 0.5.7解决方案
解决方案:删除之前的旧版本安装包,安装新的包 1.卸载之前的安装包 2.关闭R,重新打开 3. # install.packages("htmltools") library(htmltools)...
Cisco 思科路由交换网络设备 安全基线 安全加固操作
目录 账号管理、认证授权 本机认证和授权ELK-Cisco-01-01-01 设置特权口令 ELK-Cisco-01-02-01 ELK-Cisco-01-02-02 登录要求 ELK-Cisco-01-03-01 ELK-Cisco-01-03-02 ELK-Cisco-01-03-03 日志配置 ELK-Cisco-02-01-01 通信协议 ELK-Cisco-…...
WPF仿网易云搭建笔记(0):项目搭建
文章目录 前言项目地址项目Nuget包搭建项目初始化项目架构App.xaml引入MateralDesign资源包 项目初步分析将标题栏去掉DockPanel初步布局 资源字典举例 结尾 前言 最近在找工作,发现没有任何的WPF可以拿的出手的工作经验,打算仿照网易云搭建一个WPF版本…...
Python爬虫利器:BeautifulSoup库详解
BeautifulSoup是Python中最流行的HTML解析库之一,它可以方便地从HTML文档中提取数据,并且支持多种解析器,可以适应不同的HTML文档格式。本文将介绍BeautifulSoup库的作用、用途和基本用法,帮助读者了解如何使用BeautifulSoup进行H…...
【链表Linked List】力扣-117 填充每个节点的下一个右侧节点指针II
目录 问题描述 解题过程 官方题解 问题描述 给定一个二叉树: struct Node {int val;Node *left;Node *right;Node *next; } 填充它的每个 next 指针,让这个指针指向其下一个右侧节点。如果找不到下一个右侧节点,则将 next 指针设置为 N…...
安卓adb【备忘录】
adb常用命令 第三方包 pm list package -3查看所有包【外部直接进入】 adb shell pm list package退出 exit安装 adb install [路径]卸载 adb uninstall [包名]下载手机中的文件到电脑 adb pull /etc/hosts D:\tmp\电脑上传文件至手机【需要root】 adb push D:\tmp\hos…...
Linux笔记之删除指定目录下除最新修改的以 .pack 为扩展名的文件之外的所有文件
code review! 文章目录 1.Linux笔记之删除指定目录下除最新修改的以 .pack 为扩展名的文件之外的所有文件2.将指定目录下除最新修改的以 .pack 为扩展名的文件之外的所有文件移动到另一个目录3.xargs:用于从标准输入中读取数据,并将其作为参数传递给指定…...
什么是呼叫中心的语音通道?呼叫中心语音线路有几种?
什么是呼叫中心的语音通道? 呼叫中心的语音通道是指在呼叫中心中使用的语音信号传输通道,它是呼叫中心中至关重要的一部分,负责将客户的语音信息传递给客服代表,以及将客服代表的语音信息传递给客户。在呼叫中心的运营中…...
3D点云:平面模型上提取凸(凹)多边形方法
目录 一、实现原理 二、实现代码 三、运行结果 一、实现原理 首先要在点云中提取出潜在平面,对原始点云数据进行滤波,根据提取出的平面模型系数从滤波后的点云进行投影,然后根据投影后的点云计算其对应的二维凹(凸)多边形。 二、实现代码 #in...
论文笔记--A Fine-grained Interpretability Evaluation Benchmark for Neural NLP
论文笔记--A Fine-grained Interpretability Evaluation Benchmark for Neural NLP 1. 文章简介2. 文章概括3 文章重点技术3.1 数据收集3.2 数据扰动3.3 迭代标注和检查根因3.4 度量3.4.1 Token F1-score3.4.2 MAP(Mean Average Precision) 4. 文章亮点5. 原文传送门 1. 文章简…...
NFC和蓝牙在物联网中有什么意义?如何选择?
#NFC物联网# #蓝牙物联网# 在物联网中,NFC和蓝牙有什么意义? NFC在物联网中代表近场通信技术。它是一种短距离、高频的无线通信技术,可以在近距离内实现设备间的数据传输和识别。NFC技术主要用于移动支付、电子票务、门禁、移动身份识别、防…...
代码随想录二刷 |二叉树 | 二叉树的最小深度
代码随想录二刷 |二叉树 | 二叉树的最小深度 题目描述解题思路代码实现 题目描述 111.二叉树的最小深度 给定一个二叉树,找出其最小深度。 最小深度是从根节点到最近叶子节点的最短路径上的节点数量。 说明:叶子节点是指没有子…...
云上守沪 | 云轴科技ZStack成功实践精选(上海)
为打造国际数字之都,上海发布数字经济发展“十四五”规划,围绕数字新产业、数据新要素、数字新基建、智能新终端等重点领域,加强数据、技术、企业、空间载体等关键要素协同联动,加快进行数字经济发展布局;加快基础软件…...
业务系统对接大模型的基础方案:架构设计与关键步骤
业务系统对接大模型:架构设计与关键步骤 在当今数字化转型的浪潮中,大语言模型(LLM)已成为企业提升业务效率和创新能力的关键技术之一。将大模型集成到业务系统中,不仅可以优化用户体验,还能为业务决策提供…...
如何在看板中体现优先级变化
在看板中有效体现优先级变化的关键措施包括:采用颜色或标签标识优先级、设置任务排序规则、使用独立的优先级列或泳道、结合自动化规则同步优先级变化、建立定期的优先级审查流程。其中,设置任务排序规则尤其重要,因为它让看板视觉上直观地体…...
YSYX学习记录(八)
C语言,练习0: 先创建一个文件夹,我用的是物理机: 安装build-essential 练习1: 我注释掉了 #include <stdio.h> 出现下面错误 在你的文本编辑器中打开ex1文件,随机修改或删除一部分,之后…...
蓝桥杯 2024 15届国赛 A组 儿童节快乐
P10576 [蓝桥杯 2024 国 A] 儿童节快乐 题目描述 五彩斑斓的气球在蓝天下悠然飘荡,轻快的音乐在耳边持续回荡,小朋友们手牵着手一同畅快欢笑。在这样一片安乐祥和的氛围下,六一来了。 今天是六一儿童节,小蓝老师为了让大家在节…...
【大模型RAG】Docker 一键部署 Milvus 完整攻略
本文概要 Milvus 2.5 Stand-alone 版可通过 Docker 在几分钟内完成安装;只需暴露 19530(gRPC)与 9091(HTTP/WebUI)两个端口,即可让本地电脑通过 PyMilvus 或浏览器访问远程 Linux 服务器上的 Milvus。下面…...
EtherNet/IP转DeviceNet协议网关详解
一,设备主要功能 疆鸿智能JH-DVN-EIP本产品是自主研发的一款EtherNet/IP从站功能的通讯网关。该产品主要功能是连接DeviceNet总线和EtherNet/IP网络,本网关连接到EtherNet/IP总线中做为从站使用,连接到DeviceNet总线中做为从站使用。 在自动…...
10-Oracle 23 ai Vector Search 概述和参数
一、Oracle AI Vector Search 概述 企业和个人都在尝试各种AI,使用客户端或是内部自己搭建集成大模型的终端,加速与大型语言模型(LLM)的结合,同时使用检索增强生成(Retrieval Augmented Generation &#…...
初探Service服务发现机制
1.Service简介 Service是将运行在一组Pod上的应用程序发布为网络服务的抽象方法。 主要功能:服务发现和负载均衡。 Service类型的包括ClusterIP类型、NodePort类型、LoadBalancer类型、ExternalName类型 2.Endpoints简介 Endpoints是一种Kubernetes资源…...
处理vxe-table 表尾数据是单独一个接口,表格tableData数据更新后,需要点击两下,表尾才是正确的
修改bug思路: 分别把 tabledata 和 表尾相关数据 console.log() 发现 更新数据先后顺序不对 settimeout延迟查询表格接口 ——测试可行 升级↑:async await 等接口返回后再开始下一个接口查询 ________________________________________________________…...
Webpack性能优化:构建速度与体积优化策略
一、构建速度优化 1、升级Webpack和Node.js 优化效果:Webpack 4比Webpack 3构建时间降低60%-98%。原因: V8引擎优化(for of替代forEach、Map/Set替代Object)。默认使用更快的md4哈希算法。AST直接从Loa…...



