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成功实践精选(上海)
为打造国际数字之都,上海发布数字经济发展“十四五”规划,围绕数字新产业、数据新要素、数字新基建、智能新终端等重点领域,加强数据、技术、企业、空间载体等关键要素协同联动,加快进行数字经济发展布局;加快基础软件…...
Oracle查询表空间大小
1 查询数据库中所有的表空间以及表空间所占空间的大小 SELECTtablespace_name,sum( bytes ) / 1024 / 1024 FROMdba_data_files GROUP BYtablespace_name; 2 Oracle查询表空间大小及每个表所占空间的大小 SELECTtablespace_name,file_id,file_name,round( bytes / ( 1024 …...
在Ubuntu中设置开机自动运行(sudo)指令的指南
在Ubuntu系统中,有时需要在系统启动时自动执行某些命令,特别是需要 sudo权限的指令。为了实现这一功能,可以使用多种方法,包括编写Systemd服务、配置 rc.local文件或使用 cron任务计划。本文将详细介绍这些方法,并提供…...
基于Docker Compose部署Java微服务项目
一. 创建根项目 根项目(父项目)主要用于依赖管理 一些需要注意的点: 打包方式需要为 pom<modules>里需要注册子模块不要引入maven的打包插件,否则打包时会出问题 <?xml version"1.0" encoding"UTF-8…...
Ascend NPU上适配Step-Audio模型
1 概述 1.1 简述 Step-Audio 是业界首个集语音理解与生成控制一体化的产品级开源实时语音对话系统,支持多语言对话(如 中文,英文,日语),语音情感(如 开心,悲伤)&#x…...
k8s业务程序联调工具-KtConnect
概述 原理 工具作用是建立了一个从本地到集群的单向VPN,根据VPN原理,打通两个内网必然需要借助一个公共中继节点,ktconnect工具巧妙的利用k8s原生的portforward能力,简化了建立连接的过程,apiserver间接起到了中继节…...
SpringCloudGateway 自定义局部过滤器
场景: 将所有请求转化为同一路径请求(方便穿网配置)在请求头内标识原来路径,然后在将请求分发给不同服务 AllToOneGatewayFilterFactory import lombok.Getter; import lombok.Setter; import lombok.extern.slf4j.Slf4j; impor…...
网络编程(UDP编程)
思维导图 UDP基础编程(单播) 1.流程图 服务器:短信的接收方 创建套接字 (socket)-----------------------------------------》有手机指定网络信息-----------------------------------------------》有号码绑定套接字 (bind)--------------…...
安卓基础(aar)
重新设置java21的环境,临时设置 $env:JAVA_HOME "D:\Android Studio\jbr" 查看当前环境变量 JAVA_HOME 的值 echo $env:JAVA_HOME 构建ARR文件 ./gradlew :private-lib:assembleRelease 目录是这样的: MyApp/ ├── app/ …...
html css js网页制作成品——HTML+CSS榴莲商城网页设计(4页)附源码
目录 一、👨🎓网站题目 二、✍️网站描述 三、📚网站介绍 四、🌐网站效果 五、🪓 代码实现 🧱HTML 六、🥇 如何让学习不再盲目 七、🎁更多干货 一、👨…...
网站指纹识别
网站指纹识别 网站的最基本组成:服务器(操作系统)、中间件(web容器)、脚本语言、数据厍 为什么要了解这些?举个例子:发现了一个文件读取漏洞,我们需要读/etc/passwd,如…...



