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

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会被覆盖掉)
目标空间要足够大(>(目标字符串+源字符串)的大小)
目标空间必须可以修改

实例👇🏻
![在这里插入图片描述](https://img-blog.csdnimg.cn/direct/3734b3c50102440fb3cdb47ba1ba5bd7.png
可见,源字符串中间有空字符也不会停止

2,strncat

在这里插入图片描述
⭐区别:
●从源字符串追加num个字符到目标字符串的末尾,追加完以后再追加一个\0
●如果num>源字符串长度,则只会将源字符串中\0之前的内容追加到目标字符串的末尾**

实例👇🏻
在这里插入图片描述


🌈我的分享也就到此结束啦🌈
要是我的分享也能对你的学习起到帮助,那简直是太酷啦!
若有不足,还请大家多多指正,我们一起学习交流!
📢公主,王子:点赞👍→收藏⭐→关注🔍
感谢大家的观看和支持!祝大家都能得偿所愿,天天开心!!!

相关文章:

C语言——字符函数和字符串函数(一)

&#x1f4dd;前言&#xff1a; 这篇文章对我最近学习的有关字符串的函数做一个总结和整理&#xff0c;主要讲解字符函数和字符串函数&#xff08;strlen&#xff0c;strcpy和strncpy&#xff0c;strcat和strncat&#xff09;的使用方法&#xff0c;使用场景和一些注意事项&…...

15.Java程序设计-基于SSM框架的微信小程序校园求职系统的设计与实现

摘要&#xff1a; 本研究旨在设计并实现一款基于SSM框架的微信小程序校园求职系统&#xff0c;以提升校园求职流程的效率和便捷性。通过整合微信小程序平台和SSM框架的优势&#xff0c;本系统涵盖了用户管理、职位发布与搜索、简历管理、消息通知等多个功能模块&#xff0c;为…...

蓝桥杯航班时间

蓝桥杯其他真题点这里&#x1f448; //飞行时间 - 时差 已过去的时间1 //飞行时间 时差 已过去的时间2 //两个式子相加会发现 飞行时间 两段时间差的和 >> 1import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader;public cl…...

openEuler学习05-kernel升级

周末没事&#xff0c;尝试下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服务器&#xff1f; 1 NFS基础了解 NFS&#xff08;Network File System&#xff09;即文件操作系统&#xff1b;NFS允许网络中不同计算机相互之间共享资源。 1.1 NFS概述 1980年由SUN发展出来的在UNIX&Linux系统间实现文件共享的一种方法…...

自然语言处理第2天:自然语言处理词语编码

​ ☁️主页 Nowl &#x1f525;专栏 《自然语言处理》 &#x1f4d1;君子坐而论道&#xff0c;少年起而行之 ​​ 文章目录 一、自然语言处理介绍二、常见的词编码方式1.one-hot介绍缺点 2.词嵌入介绍说明 三、代码演示四、结语 一、自然语言处理介绍 自然语言处理&#xf…...

ES6中的Promise

Promise 是一种异步编程解决方案&#xff0c;Promise是一个容器&#xff0c;保存着将来才会执行的代码&#xff1b;从语法角度来说Promise是一个对象&#xff0c;可以用来获取异步操作的消息。异步操作&#xff0c;同步解决&#xff0c;避免了层层嵌套的回调函数&#xff0c;可…...

载入了名字空间‘htmltools’ 0.5.6,但需要的是>= 0.5.7解决方案

解决方案&#xff1a;删除之前的旧版本安装包&#xff0c;安装新的包 1.卸载之前的安装包 2.关闭R&#xff0c;重新打开 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初步布局 资源字典举例 结尾 前言 最近在找工作&#xff0c;发现没有任何的WPF可以拿的出手的工作经验&#xff0c;打算仿照网易云搭建一个WPF版本…...

Python爬虫利器:BeautifulSoup库详解

BeautifulSoup是Python中最流行的HTML解析库之一&#xff0c;它可以方便地从HTML文档中提取数据&#xff0c;并且支持多种解析器&#xff0c;可以适应不同的HTML文档格式。本文将介绍BeautifulSoup库的作用、用途和基本用法&#xff0c;帮助读者了解如何使用BeautifulSoup进行H…...

【链表Linked List】力扣-117 填充每个节点的下一个右侧节点指针II

目录 问题描述 解题过程 官方题解 问题描述 给定一个二叉树&#xff1a; struct Node {int val;Node *left;Node *right;Node *next; } 填充它的每个 next 指针&#xff0c;让这个指针指向其下一个右侧节点。如果找不到下一个右侧节点&#xff0c;则将 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&#xff1a;用于从标准输入中读取数据&#xff0c;并将其作为参数传递给指定…...

什么是呼叫中心的语音通道?呼叫中心语音线路有几种?

什么是呼叫中心的语音通道&#xff1f; 呼叫中心的语音通道是指在呼叫中心中使用的语音信号传输通道&#xff0c;它是呼叫中心中至关重要的一部分&#xff0c;负责将客户的语音信息传递给客服代表&#xff0c;以及将客服代表的语音信息传递给客户。在呼叫中心的运营中&#xf…...

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物联网# #蓝牙物联网# 在物联网中&#xff0c;NFC和蓝牙有什么意义&#xff1f; NFC在物联网中代表近场通信技术。它是一种短距离、高频的无线通信技术&#xff0c;可以在近距离内实现设备间的数据传输和识别。NFC技术主要用于移动支付、电子票务、门禁、移动身份识别、防…...

代码随想录二刷 |二叉树 | 二叉树的最小深度

代码随想录二刷 &#xff5c;二叉树 &#xff5c; 二叉树的最小深度 题目描述解题思路代码实现 题目描述 111.二叉树的最小深度 给定一个二叉树&#xff0c;找出其最小深度。 最小深度是从根节点到最近叶子节点的最短路径上的节点数量。 说明&#xff1a;叶子节点是指没有子…...

云上守沪 | 云轴科技ZStack成功实践精选(上海)

为打造国际数字之都&#xff0c;上海发布数字经济发展“十四五”规划&#xff0c;围绕数字新产业、数据新要素、数字新基建、智能新终端等重点领域&#xff0c;加强数据、技术、企业、空间载体等关键要素协同联动&#xff0c;加快进行数字经济发展布局&#xff1b;加快基础软件…...

业务系统对接大模型的基础方案:架构设计与关键步骤

业务系统对接大模型&#xff1a;架构设计与关键步骤 在当今数字化转型的浪潮中&#xff0c;大语言模型&#xff08;LLM&#xff09;已成为企业提升业务效率和创新能力的关键技术之一。将大模型集成到业务系统中&#xff0c;不仅可以优化用户体验&#xff0c;还能为业务决策提供…...

Auto-Coder使用GPT-4o完成:在用TabPFN这个模型构建一个预测未来3天涨跌的分类任务

通过akshare库&#xff0c;获取股票数据&#xff0c;并生成TabPFN这个模型 可以识别、处理的格式&#xff0c;写一个完整的预处理示例&#xff0c;并构建一个预测未来 3 天股价涨跌的分类任务 用TabPFN这个模型构建一个预测未来 3 天股价涨跌的分类任务&#xff0c;进行预测并输…...

DIY|Mac 搭建 ESP-IDF 开发环境及编译小智 AI

前一阵子在百度 AI 开发者大会上&#xff0c;看到基于小智 AI DIY 玩具的演示&#xff0c;感觉有点意思&#xff0c;想着自己也来试试。 如果只是想烧录现成的固件&#xff0c;乐鑫官方除了提供了 Windows 版本的 Flash 下载工具 之外&#xff0c;还提供了基于网页版的 ESP LA…...

零基础设计模式——行为型模式 - 责任链模式

第四部分&#xff1a;行为型模式 - 责任链模式 (Chain of Responsibility Pattern) 欢迎来到行为型模式的学习&#xff01;行为型模式关注对象之间的职责分配、算法封装和对象间的交互。我们将学习的第一个行为型模式是责任链模式。 核心思想&#xff1a;使多个对象都有机会处…...

网络编程(UDP编程)

思维导图 UDP基础编程&#xff08;单播&#xff09; 1.流程图 服务器&#xff1a;短信的接收方 创建套接字 (socket)-----------------------------------------》有手机指定网络信息-----------------------------------------------》有号码绑定套接字 (bind)--------------…...

如何更改默认 Crontab 编辑器 ?

在 Linux 领域中&#xff0c;crontab 是您可能经常遇到的一个术语。这个实用程序在类 unix 操作系统上可用&#xff0c;用于调度在预定义时间和间隔自动执行的任务。这对管理员和高级用户非常有益&#xff0c;允许他们自动执行各种系统任务。 编辑 Crontab 文件通常使用文本编…...

nnUNet V2修改网络——暴力替换网络为UNet++

更换前,要用nnUNet V2跑通所用数据集,证明nnUNet V2、数据集、运行环境等没有问题 阅读nnU-Net V2 的 U-Net结构,初步了解要修改的网络,知己知彼,修改起来才能游刃有余。 U-Net存在两个局限,一是网络的最佳深度因应用场景而异,这取决于任务的难度和可用于训练的标注数…...

消息队列系统设计与实践全解析

文章目录 &#x1f680; 消息队列系统设计与实践全解析&#x1f50d; 一、消息队列选型1.1 业务场景匹配矩阵1.2 吞吐量/延迟/可靠性权衡&#x1f4a1; 权衡决策框架 1.3 运维复杂度评估&#x1f527; 运维成本降低策略 &#x1f3d7;️ 二、典型架构设计2.1 分布式事务最终一致…...

人工智能 - 在Dify、Coze、n8n、FastGPT和RAGFlow之间做出技术选型

在Dify、Coze、n8n、FastGPT和RAGFlow之间做出技术选型。这些平台各有侧重&#xff0c;适用场景差异显著。下面我将从核心功能定位、典型应用场景、真实体验痛点、选型决策关键点进行拆解&#xff0c;并提供具体场景下的推荐方案。 一、核心功能定位速览 平台核心定位技术栈亮…...

前端高频面试题2:浏览器/计算机网络

本专栏相关链接 前端高频面试题1&#xff1a;HTML/CSS 前端高频面试题2&#xff1a;浏览器/计算机网络 前端高频面试题3&#xff1a;JavaScript 1.什么是强缓存、协商缓存&#xff1f; 强缓存&#xff1a; 当浏览器请求资源时&#xff0c;首先检查本地缓存是否命中。如果命…...