字符串函数详解

news2024/10/5 23:28:53

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

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指针所指向的数组

大体上和五中的函数作用相同

最后,学习加油!!!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1223796.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

ThinkPHP 系列漏洞

目录 2、thinkphp5 sql注入2 3、thinkphp5 sql注入3 4、 thinkphp5 SQL注入4 5、 thinkphp5 sql注入5 6、 thinkphp5 sql注入6 7、thinkphp5 文件包含漏洞 8、ThinkPHP5 RCE 1 9、ThinkPHP5 RCE 2 10、ThinkPHP5 rce3 11、ThinkPHP 5.0.X 反序列化漏洞 12、ThinkPHP…

anaconda安装依赖报错ERROR: Cannot unpack file C:\Users\33659\AppData\Loca...|问题记录

执行命令&#xff1a; # 安装matplotlib依赖 pip install matplotlib-i http://mirrors.aliyun.com/pypi/simple/ --trusted-host mirrors.aliyun.com出现问题&#xff1a; ERROR: Cannot unpack file C:\Users\33659\AppData\Local\Temp\pip-unpack-0au_blfq\simple (downloa…

U-boot(二):主Makefile

本文主要探讨210的主Makefile。 Makefile uboot版本号&#xff1a; VERSION&#xff1a;主板本号 PATCHLEVEL&#xff1a;次版本号 SUBLEVEL&#xff1a;再次版本号 EXTRAVERSION:附加信息 VERSION 1 PATC…

二元分类模型评估方法

文章目录 前言一、混淆矩阵二、准确率三、精确率&召回率四、F1分数五、ROC 曲线六、AUC&#xff08;曲线下面积&#xff09;七、P-R曲线类别不平衡问题中如何选择PR与ROC 八、 Python 实现代码混淆矩阵、命中率、覆盖率、F1值ROC曲线、AUC面积 指标 公式 意义 真正例 (TP)被…

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

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

java的包装类

目录 1. 包装类 1.1 基本数据类型和对应的包装类 1.2 装箱和拆箱 1.3 自动装箱和自动拆箱 1. 包装类 在Java中&#xff0c;由于基本类型不是继承自Object&#xff0c;为了在泛型代码中可以支持基本类型&#xff0c;Java给每个基本类型都对应了 一个包装类型。 若想了解…

MySQL用逗号分割的id怎么实现in (逗号分割的id字符串)。find_in_set(`id`, ‘1,2,3‘) 函数

1.MySQL 1.1.正确写法 select * from student where find_in_set(s_id, 1,2,3); 1.2.错误示范 select * from student where find_in_set(s_id, 1,2 ,3); -- 注意&#xff0c;中间不能有空格。1、3 select * from student where find_in_set(s_id, 1,2, 3); -- 注意…

sqli-labs关卡19(基于http头部报错盲注)通关思路

文章目录 前言一、回顾上一关知识点二、靶场第十九关通关思路1、判断注入点2、爆数据库名3、爆数据库表4、爆数据库列5、爆数据库关键信息 总结 前言 此文章只用于学习和反思巩固sql注入知识&#xff0c;禁止用于做非法攻击。注意靶场是可以练习的平台&#xff0c;不能随意去尚…

IDEA创建文件添加作者及时间信息

前言 当使用IDEA进行软件开发时&#xff0c;经常需要在代码文件中添加作者和时间信息&#xff0c;以便更好地维护和管理代码。 但是如果每次都手动编辑 以及修改那就有点浪费时间了。 实践 其实我们可以将注释日期 作者 配置到 模板中 同时配置上动态获取内容 例如时间 这样…

【MyBatisPlus】快速入门

文章目录 1. 简单使用2. 条件构造器 —— 针对于复杂查询3. 自定义SQL4. IService4.1 基本接口方法4.1.1 新增4.1.2 删除4.1.3 修改4.1.4 查找 4.2 开发基础业务接口4.3 开发复杂业务接口4.4 Lambda方法4.5 批量新增 5. 代码生成6. 分页功能6.1 分页插件基本使用6.1 通用分页实…

数据结构与算法设计分析——常用搜索算法

目录 一、穷举搜索二、图的遍历算法&#xff08;一&#xff09;深度优先搜索&#xff08;DFS&#xff09;&#xff08;二&#xff09;广度优先搜索&#xff08;BFS&#xff09; 三、回溯法&#xff08;一&#xff09;回溯法的定义&#xff08;二&#xff09;回溯法的应用 四、分…

node 第十九天 使用node插件node-jsonwebtoken实现身份令牌jwt认证

实现效果如下 前后端分离token登录身份验证效果演示 node-jsonwebtoken 基于node实现的jwt方案&#xff0c; jwt也就是jsonwebtoken, 是一个web规范可以去了解一下~ 一个标准的jwt由三部分组成 第一部分&#xff1a;头部 第二部分&#xff1a;载荷&#xff0c;比如可以填入加密…

VS2022 配置 OpenCV并开始第一个程序

VS2022安装 首先下载 VisualStudioSetup.exe 下载连接&#xff1a;Visual Studio 2022 IDE - 适用于软件开发人员的编程工具 点击上面的链接即可进入到下载页面。进入到下载页面&#xff0c;可看到有几个版本可选&#xff0c;如下&#xff1a; 我选择的是企业版&#xff1a;E…

23年宁波职教中心CTF竞赛-决赛

Web 拳拳组合 进去页面之后查看源码&#xff0c;发现一段注释&#xff0c;写着小明喜欢10的幂次方&#xff0c;那就是10、100、1000、10000 返回页面&#xff0c;在点击红色叉叉的时候抓包&#xff0c;修改count的值为10、100、1000、10000 然后分别获得以下信息 ?count1…

Web(5)Burpsuite之文件上传漏洞

1.搭建网站&#xff1a;为网站设置没有用过的端口号 2.中国蚁剑软件的使用 通过一句话木马获得权限 3.形象的比喻&#xff08;风筝&#xff09; 4.实验操作 参考文章&#xff1a; 文件上传之黑名单绕过_文件上传黑名单绕过_pigzlfa的博客-CSDN博客 后端验证特性 与 Window…

Jmeter 吞吐量Per User作用

第一点&#xff1a;Per User仅在Total Execution时生效 第二点&#xff1a;Per User 选中后 聚合报告中将统计的的样本数将变成线程组配置的线程数*吞吐量控制器配置的执行样本数量&#xff08;前提是线程组配置执行接口的次数线程数*循环数 大于吞吐量控制器配置的执行样本数…

英孚成人英语水平测试分为几个级别?

目录 一、1-3入门级二、4-6初级三、7-9中级四、10-12中高级五、13-15高级六、16精通级 英孚成人英语正式学习前老师会让学员进行等级测试&#xff0c;通过测试结果帮助学员制定学习计划。那么英孚成人英语水平测试分几个级别呢&#xff1f;这里大家一起了解一下。 英孚成人英语…

zabbix的安装配置,邮件告警,钉钉告警

zabbix监控架构 zabbix优点 开源&#xff0c;无软件成本投入server对设备性能要求低支持设备多&#xff0c;自带多种监控模板支持分布式集中管理&#xff0c;有自动发现功能&#xff0c;可以实现自动化监控开放式接口&#xff0c;扩展性强&#xff0c;插件编写容易当监控的item…

装修干货|卧室常见3个软装搭配问题。福州中宅装饰,福州装修

引言 作为一名软装设计师&#xff0c;我对卧室的家具及软装布置颇有心得&#xff0c;现在就给你们带来卧室装修设计一些小技巧&#xff1a; 1. 床&#xff1b;衣柜&#xff1b;床头柜的摆放 床的摆放位置非常重要&#xff0c;一般要放在离窗户稍远的地方&#xff0c;避免直接…

[MySQL] MySQL表的约束

在前面的文章中提到了约束&#xff0c;是通过数据类型对字段产生的约束。但是数据类型约束很单一&#xff0c;需要有一些额外的约束&#xff0c;更好的保证数据的合法性&#xff0c;从业务逻辑角度保证数据的正确性。于是就引入了表的约束。 表的约束很多&#xff0c;这里主要介…