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

字符串函数详解

一.字母大小写转换函数.

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 有以下结论&#xff1a; 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&#xff08;springboot&#xff09; mybatis核心-sql映射文件 基础标签说明 1.namespace&#xff0c;命名空间 2.select&#xff0c;insert&a…...

【C++】模板初阶 【 深入浅出理解 模板 】

模板初阶 前言&#xff1a;泛型编程一、函数模板&#xff08;一&#xff09;函数模板概念&#xff08;二&#xff09;函数模板格式&#xff08;三&#xff09;函数模板的原理&#xff08;四&#xff09;函数模板的实例化&#xff08;五&#xff09;模板参数的匹配原则 三、类模…...

无需API开发,伯俊科技实现电商与客服系统的无缝集成

伯俊科技的无代码开发实现系统连接 自1999年成立以来&#xff0c;伯俊科技一直致力于为企业提供全渠道一盘货的服务。凭借其24年的深耕零售行业的经验&#xff0c;伯俊科技推出了一种无需API开发的方法&#xff0c;实现电商系统和客服系统的连接与集成。这种无代码开发的方式不…...

Python | 机器学习之逻辑回归

​&#x1f308;个人主页&#xff1a;Sarapines Programmer&#x1f525; 系列专栏&#xff1a;《人工智能奇遇记》&#x1f516;少年有梦不应止于心动&#xff0c;更要付诸行动。 目录结构 1. 机器学习之逻辑回归概念 1.1 机器学习 1.2 逻辑回归 2. 逻辑回归 2.1 实验目的…...

手机,蓝牙开发板,TTL/USB模块,电脑四者之间的通讯

一,意图 通过手机蓝牙连接WeMosD1R32开发板,开发板又通过TTL转USB与电脑连接.手机通过蓝牙控制开发板上的LED灯的开,关,闪等动作,在电脑上打开串口监视工具观察其状态.也可以通过电脑上的串口监视工具来控制开发板上LED灯的动作,而在手机蓝牙监测工具中显示灯的状态. 二,原料…...

Springboot更新用户头像

人们通常(为徒省事)把一个包含了修改后userName的完整userInfo对象传给后端&#xff0c;做完整更新。但仔细想想&#xff0c;这种做法感觉有点二&#xff0c;而且浪费带宽。 于是patch诞生&#xff0c;只传一个userName到指定资源去&#xff0c;表示该请求是一个局部更新&#…...

Express.js 与 Nest.js对比

Express.js 与 Nest.js对比 自从 Node.js 发布以来&#xff0c;Javascript 在后端领域的使用有所增加。由于 Node.js 的使用越来越多&#xff0c;每天都会有新的框架和工具发布。Express 和 Nest 是使用 Node.js 创建后端应用程序的最著名的框架之一&#xff0c;在本文中&…...

总结 CNN 模型:将焦点转移到基于注意力的架构

一、说明 在计算机视觉时代&#xff0c;卷积神经网络&#xff08;CNN&#xff09;几十年来一直是主导范式。直到 2021 年 Vision Transformers (ViTs) 出现&#xff0c;这个领域才开始发生变化。现在&#xff0c;是时候采用受 Transformer 架构启发的基于注意力的模型了&#x…...

2023.11.16 hivesql高阶函数之开窗函数

目录 1.开窗函数的定义 2.数据准备 3.开窗函数之排序 需求:用三种排序方法查询学生的语文成绩排名,并降序显示 4.开窗函数分组 需求:按照科目来分类,使用三种排序方式来排序学生的成绩 5.聚合函数与分组配合使用 6.聚合函数同时和分组以及排序关键字配合使用 --需求1&…...

QTableWidget常用信号的功能

2023年11月18日&#xff0c;周六上午 itemPressed(QTableWidgetItem *item)&#xff1a;当某个项目被按下时发出信号。itemClicked(QTableWidgetItem *item)&#xff1a;当某个项目被单击时发出信号。itemDoubleClicked(QTableWidgetItem *item)&#xff1a;当某个项目被双击时…...

Vue理解01

项目建立流程 项目文件夹终端vue ui可视化新建项目&#xff08;需要一些时间&#xff09;vscode打开项目npm run serve运行 架构理解&#xff1a; 首先打开的页面默认是index.htmlindex.html默认引用main.jsmain.js引用需要的页面&#xff0c;默认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】索引与事务

作者主页&#xff1a;paper jie_博客 本文作者&#xff1a;大家好&#xff0c;我是paper jie&#xff0c;感谢你阅读本文&#xff0c;欢迎一建三连哦。 本文录入于《MySQL》专栏&#xff0c;本专栏是针对于大学生&#xff0c;编程小白精心打造的。笔者用重金(时间和精力)打造&a…...

切换为root用户后,conda:未找到命令

问题&#xff1a;切换为root用户后&#xff0c;conda:未找到命令 结论详细用户切换配置路径 结论 问题&#xff1a;切换为root用户后&#xff0c;conda:未找到命令 &#xff08;anaconda&#xff09; 解决&#xff1a;在~/.bashrc配置里增加conda的路径 详细 用户切换 1 切…...

Qt退出界面

void Dialog::on_pushButton_clicked() {if(ui->lineEdit->text() "admin" && ui->lineEdit_2->text() "123"){accept();//退出} }...

【数据标注】Label Studio用于机器学习标注

原文作者&#xff1a;我辈李想 版权声明&#xff1a;文章原创&#xff0c;转载时请务必加上原文超链接、作者信息和本声明。 文章目录 前言一、使用 Label Studio标注数据1.版本控制 二、Label Studio绑定机器学习后端三、重写机器学习后端四、通过api执行Label Studio动作 前言…...

py字符串转字符串数组

在Python中&#xff0c;你可以使用列表&#xff08;list&#xff09;来存储多个字符串。如果你有一个字符串&#xff0c;并且想要将其转换为字符串数组&#xff0c;你可以使用列表推导式&#xff08;list comprehension&#xff09;。这是一个简单的例子&#xff1a; # 原始字…...

强化学习各种符号含义解释

&#xff1a;状态 : 动作 : 奖励 : 奖励函数 : 非终结状态 : 全部状态&#xff0c;包括终结状态 : 动作集合 ℛ : 奖励集合 : 转移矩阵 : 离散时间步 &#xff1a; 回合内最终时间步 : 时间t的状态 : 时间t动作 : 时间t的奖励,通常为随机量&#xff0c;且由和决定 : 回报 : n步…...

Axure基础详解二十:中继器随机抽奖效果

效果演示 组件 一、中继器 建立一个“中继器”内部插入一个“正方形”&#xff0c;给“正方形”添加一个【样式效果】>>【选中状态】填充背景为红色&#xff0c;字体白色。在中继器表格中插入两列数据函数&#xff1a;【xuhao】(序号列&#xff0c;按12345……填写&…...

测试微信模版消息推送

进入“开发接口管理”--“公众平台测试账号”&#xff0c;无需申请公众账号、可在测试账号中体验并测试微信公众平台所有高级接口。 获取access_token: 自定义模版消息&#xff1a; 关注测试号&#xff1a;扫二维码关注测试号。 发送模版消息&#xff1a; import requests da…...

Java 语言特性(面试系列2)

一、SQL 基础 1. 复杂查询 &#xff08;1&#xff09;连接查询&#xff08;JOIN&#xff09; 内连接&#xff08;INNER JOIN&#xff09;&#xff1a;返回两表匹配的记录。 SELECT e.name, d.dept_name FROM employees e INNER JOIN departments d ON e.dept_id d.dept_id; 左…...

R语言AI模型部署方案:精准离线运行详解

R语言AI模型部署方案:精准离线运行详解 一、项目概述 本文将构建一个完整的R语言AI部署解决方案,实现鸢尾花分类模型的训练、保存、离线部署和预测功能。核心特点: 100%离线运行能力自包含环境依赖生产级错误处理跨平台兼容性模型版本管理# 文件结构说明 Iris_AI_Deployme…...

AI Agent与Agentic AI:原理、应用、挑战与未来展望

文章目录 一、引言二、AI Agent与Agentic AI的兴起2.1 技术契机与生态成熟2.2 Agent的定义与特征2.3 Agent的发展历程 三、AI Agent的核心技术栈解密3.1 感知模块代码示例&#xff1a;使用Python和OpenCV进行图像识别 3.2 认知与决策模块代码示例&#xff1a;使用OpenAI GPT-3进…...

pam_env.so模块配置解析

在PAM&#xff08;Pluggable Authentication Modules&#xff09;配置中&#xff0c; /etc/pam.d/su 文件相关配置含义如下&#xff1a; 配置解析 auth required pam_env.so1. 字段分解 字段值说明模块类型auth认证类模块&#xff0c;负责验证用户身份&am…...

根据万维钢·精英日课6的内容,使用AI(2025)可以参考以下方法:

根据万维钢精英日课6的内容&#xff0c;使用AI&#xff08;2025&#xff09;可以参考以下方法&#xff1a; 四个洞见 模型已经比人聪明&#xff1a;以ChatGPT o3为代表的AI非常强大&#xff0c;能运用高级理论解释道理、引用最新学术论文&#xff0c;生成对顶尖科学家都有用的…...

在web-view 加载的本地及远程HTML中调用uniapp的API及网页和vue页面是如何通讯的?

uni-app 中 Web-view 与 Vue 页面的通讯机制详解 一、Web-view 简介 Web-view 是 uni-app 提供的一个重要组件&#xff0c;用于在原生应用中加载 HTML 页面&#xff1a; 支持加载本地 HTML 文件支持加载远程 HTML 页面实现 Web 与原生的双向通讯可用于嵌入第三方网页或 H5 应…...

Unsafe Fileupload篇补充-木马的详细教程与木马分享(中国蚁剑方式)

在之前的皮卡丘靶场第九期Unsafe Fileupload篇中我们学习了木马的原理并且学了一个简单的木马文件 本期内容是为了更好的为大家解释木马&#xff08;服务器方面的&#xff09;的原理&#xff0c;连接&#xff0c;以及各种木马及连接工具的分享 文件木马&#xff1a;https://w…...

GruntJS-前端自动化任务运行器从入门到实战

Grunt 完全指南&#xff1a;从入门到实战 一、Grunt 是什么&#xff1f; Grunt是一个基于 Node.js 的前端自动化任务运行器&#xff0c;主要用于自动化执行项目开发中重复性高的任务&#xff0c;例如文件压缩、代码编译、语法检查、单元测试、文件合并等。通过配置简洁的任务…...

Windows安装Miniconda

一、下载 https://www.anaconda.com/download/success 二、安装 三、配置镜像源 Anaconda/Miniconda pip 配置清华镜像源_anaconda配置清华源-CSDN博客 四、常用操作命令 Anaconda/Miniconda 基本操作命令_miniconda创建环境命令-CSDN博客...