字符串函数详解
一.字母大小写转换函数.
1.1.tolower

结合cppreference.com
有以下结论:
1.头文件为#include <ctype.h>
2.使用规则为
#include <stdio.h>
#include <ctype.h>
int main()
{char ch = 'A';printf("%c\n",tolower(ch));//大写转换为小写return 0;
}
3.用于大写转换为小写.
1.2.toupper
结合cppreference.com

有以下结论:
1.头文件为#include <ctype.h>
2.使用规则:
#include <stdio.h>
#include <ctype.h>
int main()
{char ch = 'a';int ch2 = 'a';printf("%c\n", toupper(ch));printf("%c\n", toupper(ch2));return 0;
}
注意:仔细会发现,char类型也可以实现,这是因为其在内存中也是通过ASCII码值实现的!!!
3.用于小写转换大写
二.字符串比较函数.

结合cppreference.com
有以下结论:
1.头文件为#include <string.h>
2.规则:
定义两个字符串,我们这假设为s1,s2;如果s1<s2,返回<0;如果s1=s2;返回0;如果s1>s2,返回>0;
问题来了???咋比较?难道比较字母顺序吗?准确的说是比较ASCII码表,例如:A--65,a--97;来个题目帮助大家理解:
#define _CRT_SECURE_NO_WARNINGS 1
#include <stdio.h>
#include <string.h>
int main()
{char arr1[] = "Hello world!";char arr2[] = "Hello World!";int result = strcmp(arr1, arr2);if (!result){printf("arr1==arr2\n");}else if (result < 0){printf("arr1<arr2\n");}else{printf("arr1>arr2\n");}return 0;
}
注意:ASCII码中大写和小写谁大???
结果如下:

三.字符串长度获取.

结合cppreference.com
有以下结论:
1.头文件为#include <strling.h>
2.使用规则:
求字符串长度,到\0停止(不包括\0),而sizeof是包括\0的
#define _CRT_SECURE_NO_WARNINGS 1
#include <stdio.h>
#include <string.h>
int main()
{char arr[] = "hello world!";printf("%d\n", sizeof(arr));printf("%d\n", strlen(arr));return 0;
}
结果:

四.字符串连接函数

以下结论:
1.strcat函数是将两个字符数组中的字符串连接起来
2.作用是将指针src所指的字符串添加到dest指针所指的字符串的结尾处,相当与覆盖\0,并且会在整个字符的末尾添加\0,
3.注意:两个指针所指向的空间不能有重叠,并且dest指针指向的空间必须有足够大的空间来容纳src指针指向的字符串.
例如:
#define _CRT_SECURE_NO_WARNINGS 1
#include <stdio.h>
#include <string.h>
int main()
{char dest[300] = "Hello ";//[]里面一定要确定好大小,不然缓冲区可能溢出char src[] = "World!";strcat(dest, src);int sz = strlen(dest);for (int i = 0; i < sz; i++){printf("%c", dest[i]);}printf("\n");return 0;
}

五.字符串复制函数.
5.1.strcpy函数

结论如下:
1.头文件为#include <string.h>
2.使用规则:将指针src所指向字符串内容复制给dest指针所指向的字符串数组中
3.注意:
1.两个指针所指向的空间不能有重叠,并且dest指针指向的空间必须有足够大的空间来容纳src指针指向的字符串.
2.字符串数组dest必须以数组名形式出现,而src可以是字符串数组名,也可以是字符串常量
看代码:
#define _CRT_SECURE_NO_WARNINGS 1
#include <stdio.h>
#include <string.h>
void Print(char* dest, int n)
{for (int i = 0; i < n; i++){printf("%c", dest[i]);}printf("\n");
}
int main()
{char dest1[200] = { 0 };//注意空间大小char dest2[200] = { 0 };char src[] = "Hello World!";strcpy(dest1, src);strcpy(dest2, "hello world!");int sz1 = strlen(dest1);int sz2 = strlen(dest2);Print(dest1, sz1);Print(dest2, sz2);return 0;
}
结果:

3.赋值运算符不能将一个字符串常量或者字符串数组赋给另一个字符数组,赋值运算符只能对字符数组中的单个字符变量进行赋值!
5.2.strncpy函数

结论如下:
1.头文件为#include <string.h>
2.对比strcpy函数,strncpy函数更多的是将字符串中的一部分放入dest指针所指向的字符数组中,第三个参数就是用来实现截取作用的
看代码理解:
#define _CRT_SECURE_NO_WARNINGS 1
#include <stdio.h>
#include <string.h>
int main()
{char dest1[200] = { 0 };char dest2[200] = { 0 };char src[] = "I love my father! I love my mother!";strncpy(dest1, src, 17);printf("%s\n", dest1);strncpy(dest2, src+19, 17);printf("%s\n", dest2);return 0;
}

注意:dest数组要初始化为\0,不然可能出现乱码,原因是因为strncpy函数在复制字符串时不会自动将\0添加到目标字符串后面。
如下:

六.字符串追加字符函数.
strncat函数

结论如下:
1.头文件为#include <stdio.h>
2.使用规则:将src指针所指向的数组中至多count+1个字节数放入dest指针所指向的数组
大体上和五中的函数作用相同
最后,学习加油!!!
相关文章:
字符串函数详解
一.字母大小写转换函数. 1.1.tolower 结合cppreference.com 有以下结论: 1.头文件为#include <ctype.h> 2.使用规则为 #include <stdio.h> #include <ctype.h> int main() {char ch A;printf("%c\n",tolower(ch));//大写转换为小…...
Mybatis学习笔记-映射文件,标签,插件
目录 概述 mybatis做了什么 原生JDBC存在什么问题 MyBatis组成部分 Mybatis工作原理 mybatis和hibernate区别 使用mybatis(springboot) mybatis核心-sql映射文件 基础标签说明 1.namespace,命名空间 2.select,insert&a…...
【C++】模板初阶 【 深入浅出理解 模板 】
模板初阶 前言:泛型编程一、函数模板(一)函数模板概念(二)函数模板格式(三)函数模板的原理(四)函数模板的实例化(五)模板参数的匹配原则 三、类模…...
无需API开发,伯俊科技实现电商与客服系统的无缝集成
伯俊科技的无代码开发实现系统连接 自1999年成立以来,伯俊科技一直致力于为企业提供全渠道一盘货的服务。凭借其24年的深耕零售行业的经验,伯俊科技推出了一种无需API开发的方法,实现电商系统和客服系统的连接与集成。这种无代码开发的方式不…...
Python | 机器学习之逻辑回归
🌈个人主页:Sarapines Programmer🔥 系列专栏:《人工智能奇遇记》🔖少年有梦不应止于心动,更要付诸行动。 目录结构 1. 机器学习之逻辑回归概念 1.1 机器学习 1.2 逻辑回归 2. 逻辑回归 2.1 实验目的…...
手机,蓝牙开发板,TTL/USB模块,电脑四者之间的通讯
一,意图 通过手机蓝牙连接WeMosD1R32开发板,开发板又通过TTL转USB与电脑连接.手机通过蓝牙控制开发板上的LED灯的开,关,闪等动作,在电脑上打开串口监视工具观察其状态.也可以通过电脑上的串口监视工具来控制开发板上LED灯的动作,而在手机蓝牙监测工具中显示灯的状态. 二,原料…...
Springboot更新用户头像
人们通常(为徒省事)把一个包含了修改后userName的完整userInfo对象传给后端,做完整更新。但仔细想想,这种做法感觉有点二,而且浪费带宽。 于是patch诞生,只传一个userName到指定资源去,表示该请求是一个局部更新&#…...
Express.js 与 Nest.js对比
Express.js 与 Nest.js对比 自从 Node.js 发布以来,Javascript 在后端领域的使用有所增加。由于 Node.js 的使用越来越多,每天都会有新的框架和工具发布。Express 和 Nest 是使用 Node.js 创建后端应用程序的最著名的框架之一,在本文中&…...
总结 CNN 模型:将焦点转移到基于注意力的架构
一、说明 在计算机视觉时代,卷积神经网络(CNN)几十年来一直是主导范式。直到 2021 年 Vision Transformers (ViTs) 出现,这个领域才开始发生变化。现在,是时候采用受 Transformer 架构启发的基于注意力的模型了&#x…...
2023.11.16 hivesql高阶函数之开窗函数
目录 1.开窗函数的定义 2.数据准备 3.开窗函数之排序 需求:用三种排序方法查询学生的语文成绩排名,并降序显示 4.开窗函数分组 需求:按照科目来分类,使用三种排序方式来排序学生的成绩 5.聚合函数与分组配合使用 6.聚合函数同时和分组以及排序关键字配合使用 --需求1&…...
QTableWidget常用信号的功能
2023年11月18日,周六上午 itemPressed(QTableWidgetItem *item):当某个项目被按下时发出信号。itemClicked(QTableWidgetItem *item):当某个项目被单击时发出信号。itemDoubleClicked(QTableWidgetItem *item):当某个项目被双击时…...
Vue理解01
项目建立流程 项目文件夹终端vue ui可视化新建项目(需要一些时间)vscode打开项目npm run serve运行 架构理解: 首先打开的页面默认是index.htmlindex.html默认引用main.jsmain.js引用需要的页面,默认App.vue。Vue示例挂载可以在…...
4、FFmpeg命令行操作8
生成测试文件 找三个不同的视频每个视频截取10秒内容 ffmpeg -i 沙海02.mp4 -ss 00:05:00 -t 10 -codec copy 1.mp4 ffmpeg -i 复仇者联盟3.mp4 -ss 00:05:00 -t 10 -codec copy 2.mp4 ffmpeg -i 红海行动.mp4 -ss 00:05:00 -t 10 -codec copy 3.mp4 如果音视…...
【MySQL】索引与事务
作者主页:paper jie_博客 本文作者:大家好,我是paper jie,感谢你阅读本文,欢迎一建三连哦。 本文录入于《MySQL》专栏,本专栏是针对于大学生,编程小白精心打造的。笔者用重金(时间和精力)打造&a…...
切换为root用户后,conda:未找到命令
问题:切换为root用户后,conda:未找到命令 结论详细用户切换配置路径 结论 问题:切换为root用户后,conda:未找到命令 (anaconda) 解决:在~/.bashrc配置里增加conda的路径 详细 用户切换 1 切…...
Qt退出界面
void Dialog::on_pushButton_clicked() {if(ui->lineEdit->text() "admin" && ui->lineEdit_2->text() "123"){accept();//退出} }...
【数据标注】Label Studio用于机器学习标注
原文作者:我辈李想 版权声明:文章原创,转载时请务必加上原文超链接、作者信息和本声明。 文章目录 前言一、使用 Label Studio标注数据1.版本控制 二、Label Studio绑定机器学习后端三、重写机器学习后端四、通过api执行Label Studio动作 前言…...
py字符串转字符串数组
在Python中,你可以使用列表(list)来存储多个字符串。如果你有一个字符串,并且想要将其转换为字符串数组,你可以使用列表推导式(list comprehension)。这是一个简单的例子: # 原始字…...
强化学习各种符号含义解释
:状态 : 动作 : 奖励 : 奖励函数 : 非终结状态 : 全部状态,包括终结状态 : 动作集合 ℛ : 奖励集合 : 转移矩阵 : 离散时间步 : 回合内最终时间步 : 时间t的状态 : 时间t动作 : 时间t的奖励,通常为随机量,且由和决定 : 回报 : n步…...
Axure基础详解二十:中继器随机抽奖效果
效果演示 组件 一、中继器 建立一个“中继器”内部插入一个“正方形”,给“正方形”添加一个【样式效果】>>【选中状态】填充背景为红色,字体白色。在中继器表格中插入两列数据函数:【xuhao】(序号列,按12345……填写&…...
别再只盯着PWM了!手把手教你为你的Arduino项目选择合适的DCDC调制方式(PFM/PWM/Burst Mode全解析)
别再只盯着PWM了!手把手教你为你的Arduino项目选择合适的DCDC调制方式(PFM/PWM/Burst Mode全解析) 当你为Arduino项目挑选电源模块时,是否曾被数据手册上PWM、PFM、Burst Mode这些术语搞得一头雾水?我曾在一个低功耗气…...
如何构建智能的多显示器窗口布局持久化解决方案
如何构建智能的多显示器窗口布局持久化解决方案 【免费下载链接】PersistentWindows fork of http://www.ninjacrab.com/persistent-windows/ with windows 10 update 项目地址: https://gitcode.com/gh_mirrors/pe/PersistentWindows PersistentWindows 是一个开源工具…...
Office RibbonX Editor:免费开源Office界面定制终极指南
Office RibbonX Editor:免费开源Office界面定制终极指南 【免费下载链接】office-ribbonx-editor An overhauled fork of the original Custom UI Editor for Microsoft Office, built with WPF 项目地址: https://gitcode.com/gh_mirrors/of/office-ribbonx-edit…...
Sunshine自托管游戏串流服务器:构建高性能私人云游戏平台的完整指南
Sunshine自托管游戏串流服务器:构建高性能私人云游戏平台的完整指南 【免费下载链接】Sunshine Self-hosted game stream host for Moonlight. 项目地址: https://gitcode.com/GitHub_Trending/su/Sunshine Sunshine是一款功能强大的自托管游戏串流服务器&am…...
RK3506开发板PWM输入捕获配置与调试实战指南
1. 项目概述:在RK3506上搞定PWM输入捕获最近在做一个工业网关项目,需要精确测量外部传感器发来的PWM信号频率和占空比,核心板选型正好落在了触觉智能的RK3506开发板上。这块板子接口丰富,性能也够用,但上手调试PWM输入…...
涿州靠谱软体沙发家具城,为你打造舒适家居的理想之选!
在涿州,选择一家靠谱的软体沙发家具城至关重要,它不仅关系到家居的舒适度,还影响着生活品质。今天就为大家推荐涿州市雅木轩家具店(简称:旭日家具),并将它与其他大厂进行对比,让你更…...
Swift集成飞书API:使用feishu-swift SDK构建高效机器人
1. 项目概述:一个连接飞书与Swift生态的桥梁 最近在折腾一个内部工具,需要把服务端的一些数据变动实时同步到飞书群里,方便团队同学及时跟进。服务端是用Swift写的,而飞书官方虽然有开放的API,但直接上手去调…...
RecurDyn新手避坑指南:从剖视图到质心修改,这些操作细节没人告诉你
RecurDyn新手避坑指南:从剖视图到质心修改的实战精要 刚接触RecurDyn的工程师常会遇到这样的困境:明明按照教程步骤操作,仿真却频频报错;或是模型看似构建完成,计算结果却与预期相差甚远。这些问题往往源于软件操作中那…...
手把手教你逆向分析PerimeterX px3:从混淆还原到参数解密全流程
逆向工程实战:PerimeterX px3防护体系深度解析与突破 在当今数字化时代,网站安全防护与数据采集之间的博弈从未停止。作为前端安全领域的标杆解决方案,PerimeterX的px3防护机制以其复杂的混淆技术和动态行为分析著称,成为众多安全…...
NotebookLM音乐学应用的5个致命误区(附诊断清单),90%新手在第3步就误入歧途导致文献溯源失效
更多请点击: https://intelliparadigm.com 第一章:NotebookLM音乐学研究辅助的底层逻辑与适用边界 NotebookLM 本质是一个基于用户上传文档构建私有语义索引的轻量级 AI 助手,其核心并非通用大模型的自由生成,而是“引用驱动型推…...
