字符串函数详解

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

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

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

最后,学习加油!!!

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

vscode编写verilog的插件【对齐、自动生成testbench文件】

vscode编写verilog的插件&#xff1a; 插件名称&#xff1a;verilog_testbench,用于自动生成激励文件 安装教程&#xff1a;基于VS Code的Testbench文件自动生成方法——基于VS Code的Verilog编写环境搭建SP_哔哩哔哩_bilibili 优化的方法&#xff1a;https://blog.csdn.net…

数据结构与算法-哈夫曼树与图

&#x1f31e; “永远积极向上&#xff0c;永远豪情满怀&#xff0c;永远热泪盈眶&#xff01;” 哈夫曼树与图 &#x1f388;1.哈夫曼树&#x1f52d;1.1树与二叉树的转换&#x1f52d;1.2森林与二叉树的转换&#x1f52d;1.3哈夫曼树&#x1f50e;1.3.1哈夫曼树的概念&#x…

Web之CSS笔记

Web之HTML、CSS、JS 二、CSS&#xff08;Cascading Style Sheets层叠样式表&#xff09;CSS与HTML的结合方式CSS选择器CSS基本属性CSS伪类DIVCSS轮廓CSS边框盒子模型CSS定位 Web之HTML笔记 二、CSS&#xff08;Cascading Style Sheets层叠样式表&#xff09; Css是种格式化网…

传输层——TCP协议

文章目录 一.TCP协议二.TCP协议格式1.序号与确认序号2.窗口大小3.六个标志位 三.确认应答机制&#xff08;ACK&#xff09;四.超时重传机制五.连接管理机制1.三次握手2.四次挥手 六.流量控制七.滑动窗口八.拥塞控制九.延迟应答十.捎带应答十一.面向字节流十二.粘包问题十三.TCP…

【有源码】基于asp.net的旅游度假村管理系统C#度假村美食住宿一体化平台源码调试 开题 lw ppt

&#x1f495;&#x1f495;作者&#xff1a;计算机源码社 &#x1f495;&#x1f495;个人简介&#xff1a;本人七年开发经验&#xff0c;擅长Java、Python、PHP、.NET、微信小程序、爬虫、大数据等&#xff0c;大家有这一块的问题可以一起交流&#xff01; &#x1f495;&…

OpenAI 解雇了首席执行官 Sam Altman

Sam Altman 已被 OpenAI 解雇&#xff0c;原因是担心他与董事会的沟通和透明度&#xff0c;可能会影响公司的发展。该公司首席技术官 Mira Murati 将担任临时首席执行官&#xff0c;但 OpenAI 可能会从科技行业寻找新的首席执行官来领导未来的产品开发。Altman 的解雇给 OpenAI…

YOLOv8优化与量化(1000+ FPS性能)

YOLO家族又添新成员了&#xff01;作为目标检测领域著名的模型家族&#xff0c;you only look once (YOLO) 推 出新模型的速度可谓是越来越快。就在刚刚过去的1月份&#xff0c;YOLO又推出了最新的YOLOv8模型&#xff0c;其模型结构和架构上的创新以及所提供的性能提升&#xf…

电子电器架构 —— 车载网关边缘节点路由转发策略

电子电器架构 —— 车载网关边缘节点路由转发策略 我是穿拖鞋的汉子,魔都中坚持长期主义的汽车电子工程师。 PS:小细节,本文字数5000+,详细描述了网关在车载框架中的具体性能设置。 老规矩,分享一段喜欢的文字,避免自己成为高知识低文化的工程师: 没有人关注你。也无…

035、目标检测-物体和数据集

之——物体检测和数据集 目录 之——物体检测和数据集 杂谈 正文 1.目标检测 2.目标检测数据集 3.目标检测和边界框 4.目标检测数据集示例 杂谈 目标检测是计算机视觉中应用最为广泛的&#xff0c;之前所研究的图片分类等都需要基于目标检测完成。 在图像分类任务中&am…

动手学深度学习——循环神经网络的从零开始实现(原理解释+代码详解)

文章目录 循环神经网络的从零开始实现1. 独热编码2. 初始化模型参数3. 循环神经网络模型4. 预测5. 梯度裁剪6. 训练 循环神经网络的从零开始实现 从头开始基于循环神经网络实现字符级语言模型。 # 读取数据集 %matplotlib inline import math import torchfrom torch import …

机器学习算法——集成学习

目录 1. Bagging 1. Bagging Bagging&#xff08;bootstrap aggregating&#xff1a;自举汇聚法&#xff09;也叫装袋法&#xff0c;其思想是通过将许多相互独立的学习器的结果进行结合&#xff0c;从而提高整体学习器的泛化能力&#xff0c;是一种并行集成学习方法。 工作流…

计算机msvcp120.dll丢失?msvcp120.dll丢失5种简单的解决方法分享

你们是否在电脑操作过程中常看到一段类似“msvcp120.dll缺失或损坏”的报错信息&#xff1f;这可能会干扰大家的日常应用程序使用&#xff0c;怎么办呢&#xff1f;别担心&#xff0c;接下来就是一篇详细的步骤来教你如何应对这种情况&#xff0c;让你们的电脑运作如初&#xf…

Cadence virtuoso drc lvs pex 无法输入

问题描述&#xff1a;在PEX中的PEX options中 Ground node name 无法输入内容。 在save runset的时候也出现无法输入名称的情况 解决办法&#xff1a; copy一个.bashrc文件到自己的工作目录下 打开.bashrc文件 在.bashrc中加一行代码&#xff1a;unset XMODIFIERS 在终端sour…

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

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

【Proteus仿真】【STM32单片机】防火防盗GSM智能家居设计

文章目录 一、功能简介二、软件设计三、实验现象联系作者 一、功能简介 本项目使用Proteus8仿真STM32单片机控制器&#xff0c;使用声光报警模块、LCD1602显示模块、DS18B20温度、烟雾传感器模块、按键模块、PCF8591 ADC模块、红外检测模块等。 主要功能&#xff1a; 系统运行…

Linux--初识和几个简单的指令(1)

目录 前言 0.什么是操作系统 0.1 搭建 Linux 环境 0.2搭建 Linux 环境小结 1.使用 XShell 远程登录 Linux 1.1关于 Linux 桌面 1.2下载安装 XShell 1.3查看 Linux 主机 ip 1.4XShell 下的复制粘贴 2.Linux下基本指令 2.1 pwd命令 2.2 ls命令 2.3 mkdir指令 2.4 cd…

vue2项目封装axios(vite打包)

1.安装 npm i axios 2.封装axios 说明&#xff1a;request.js文件 //对axios进行二次封装 import axios from "axios" import "nprogress/nprogress.css"// 当前模块中引入store // import store from "/store"// 引入进度条import nprogress f…

【C++】泛型编程 ⑥ ( 类模板 | 类模板语法 | 代码示例 )

文章目录 一、类模板1、类模板引入2、声明类模板语法3、调用类模板语法 二、代码示例 - 类模板1、代码示例2、执行结果 一、类模板 1、类模板引入 类模板 与 函数模板 的 作用类似 , 当 多个类 功能相同 , 只是数据类型不同 , 此时可以 定义一个类模板 代替 定义多个类 ; 借助…

Python (十) 元组

元组 元组与列表类似&#xff0c;不同之处在于元组的元素不能修改。 元组使用小括号 ( )&#xff0c;列表使用方括号 [ ]。 元组创建只需要在括号中添加元素&#xff0c;并使用逗号隔开即可。 访问 tup1 (hello,Java,Python,123,456) print(type(tup1)) print(tup1[1])#输出 …

微信个人号api

简要描述&#xff1a; 登录E云平台 请求URL&#xff1a; http://域名地址/member/login域名地址开发者账号密码:后台系统自助开通 请求方式&#xff1a; POST 请求头Headers&#xff1a; Content-Type&#xff1a;application/json 参数&#xff1a; 参数名必选类型说…