14、字符串处理函数

news2024/12/25 0:20:49

目录

一、字符串复制

二、字符串连接

三、字符串比较

四、字符串大小写转换

五、获得字符串长度


一、字符串复制

在字符串处理函数中包含strcpy函数,该函数可用于复制特定长度的字符串到另一个字符串中。其语法格式如下:

35a48451d2934f978cca8bf0b12cd976.png

功能:把源字符数组中的字符串复制到目的字符数组中,字符串结束标志“\0”也一同复制。

注意

(1)要求目的字符数组有足够的长度,否则不能全部装入所复制的字符串。

(2)“目的字符数组名”必须写成数组名形式;而“源字符数组名”可以是字符数组名,也可以是一个字符串常量,这时相当于把一个字符串赋予一个字符数组。

(3)不能用赋值语句将一个字符串常量或字符数组直接赋给一个字符数组。

例1:定义了两个字符数组,分别用于存储源字符数组和目的字符数组,然后获取用户为两个字符数组赋值的字符串,并分别输出两个字符数组

#include<stdio.h>
int main() {
	char s1[30], s2[30];  //定义字符串变量
	printf("输入目的字符串:\n");  //提示信息
	gets(s1);  //输入目的字符串
	printf("输入源字符串:\n");  //提示信息
	gets(s2);  //输入源字符串

	printf("输出目的字符串:\n");  //输出结果
	puts(s1);
	printf("输出源字符串:\n");  //输出结果
	puts(s2);
	strcpy(s1, s2);  //调用strcpy函数实现字符串复制
	printf("调用strcpy函数进行字符串复制:\n");
	printf("复制字符串之后的目的字符串:\n");
	puts(s1);  //输出复制后的目的字符串
	return 0;  //结束,无用时可省略
}

运行结果:

6333755ac27a4ce19b646b6f65b54fd7.png

二、字符串连接

字符串连接就是将一个字符串连接到另一个字符串的末尾,使其组合成一个新的字符串。在字符串处理函数中,strcat函数就具有字符串连接的功能。其语法格式如下:

b458fa1fc7a24279ae69369d3e3d25a7.png

功能:把源字符数组中的字符串连接到目的字符数组中字符串的后面,并删去目的字符数组中原有的串结束标志“\0”。

注意:目的字符数组应有足够的长度,否则很可能无法装下连接后的字符串。

例2:定义两个字符数组,分别为存储源字符数组和目的字符数组,然后获取用户为两个字符数组赋值的字符串,并分别输出两个字符数组

#include<stdio.h>
int main() {
	char s1[30], s2[30];  //定义字符串变量
	printf("输入目的字符串:\n");  //提示信息
	gets(s1);  //输入目的字符串
	printf("输入源字符串:\n");  //提示信息
	gets(s2);  //输入源字符串

	printf("输出目的字符串:\n");  //输出结果
	puts(s1);
	printf("输出源字符串:\n");  //输出结果
	puts(s2);
	strcat(s1, s2);  //调用strcpy函数实现字符串复制
	printf("调用strcat函数进行字符串连接:\n");
	printf("字符串连接之后的目的字符串:\n");
	puts(s1);  //输出复制后的目的字符串
	return 0;  //结束,无用时可省略
}

运行结果:

3b1301b2315a486d8e968d42909bb662.png

注意:字符串复制实质上是用源字符数组中的字符串覆盖目的字符数组中的字符串,而字符串连接则不存在覆盖的问题,只是单纯地将源字符数组中的字符串连接到目的字符数组的字符串的后面。

三、字符串比较

字符串比较就是将一个字符串与另一个字符串从首字母开始,按照ASCII码的顺序逐个进行比较。在字符串处理函数中,strcmp函数就具有在字符串间进行比较的功能。其语法格式如下:

52e0eeedda7e49c79d2152420b0eaea3.png

功能:按照ASCII码顺序比较两个数组中的字符串,并返回比较结果。返回值如下:

  • 字符串1=字符串2,返回值为0。
  • 字符串1>字符串2,返回值为正数。
  • 字符串1<字符串2,返回值为负数。

注意:当两个字符串进行比较时,若出现不同的字符,则以第一个不同字符的比较结果作为整个比较的结果。

例3:定义4个字符数组,分别用来存储用户名、密码、用户输入的用户名及密码字符串,然后调用strcmp函数比较用户输入的用户名和密码是否正确

#include<stdio.h>
int main() {
	char user[20] = { "yangyang" };  //设置用户名字符串
	char password[20] = { "nb" };  //设置密码字符串
	char ustr[20], pwstr[20];  //定义待检测用户名,密码字符串
	int i = 0;

	while (i < 3) {
		printf("输入用户名:\n");  //提示信息
		gets(ustr);  //输入用户名字符串
		printf("输入密码:\n");  //提示信息
		gets(pwstr);  //输入密码字符串
		//对输入的用户名进行检测
		if (strcmp(user, ustr)) {
			printf("用户名输入错误!\n");  //提示错误信息
		}
		else {
			//对输入的密码进行检测
			if (strcmp(password, pwstr)) {
				printf("密码输入错误!\n");  //提示错误信息
			}
			else {
				printf("欢迎使用!\n");
				break;
			}
		}
		i++;
	}
	if (i == 3) {
		printf("输入字符串错误3次!\n");  //提示错误信息
	}
	return 0;  //结束,无用时可省略
}

运行结果:

1b81485f6cdc4ae1a26127db29f0abbe.png

四、字符串大小写转换

字符串的大小写转换需要使用struprstrlwr函数。

strupr函数的语法格式如下:

4ab84b14e0f24fa19eeb92120b8d0545.png

功能:将字符串中的小写字母转换成大写字母,其他字母不变。

strlwr函数的语法格式如下:

c99a0c8f0ca2491c81fe7957f9cc1297.png

功能:将字符串中的大写字母转换成小写字母,其他字母不变。

例4:定义两个字符数组,分别用来存储要转换的字符串和转换后的字符串,然后根据用户输入的操作指令,判断应调用strupr函数还是strlwr函数,进行大小写转换

#define _CRT_SECURE_NO_WARNINGS  //便于调用scanf
#include<stdio.h>
#include<string.h>  //便于进行字符串处理
#pragma warning(disable:4996)  //便于调用strupr,strlwr
int main() {
	char text[20], change[20];  //定义字符串变量
	int n;  //定义整数型变量
	int i = 0;
	//while循环
	while (3) {  //循环次数为3
		printf("输入转换大小写方式(1表示大写,2表示小写,0表示退出):\n");
		scanf("%d", &n); 
		if (n == 1)  //如果是1则进行大写转换
		{
			printf("输入一个字符串:\n");  //输入要转换的字符
			scanf("%s", &text);  //输入要转换的字符
			strcpy(change, text);  //复制要转换的字符
			strupr(change);  //字符串大写转换
			printf("转换成大写字母的字符串为:%s\n", change);  //输出转换后的字符串
		}
		else if(n==2)  //如果数值为2
		{
			printf("输入一个字符串:\n");  //输入要转换的字符
			scanf("%s", &text);  //输入要转换的字符
			strcpy(change, text);  //复制要转换的字符
			strlwr(change);  //字符串大写转换
			printf("转换成小写字母的字符串为:%s\n", change);  //输出转换后的字符串
		}
		else if (n == 0) {  //如果数值为0
			break;   //跳出循环
		}
	}
	return 0;  //结束,无用时可省略
}

运行结果:

82eb81d7e32545818b17ac38123b7c4c.png

五、获得字符串长度

在使用字符串时,有时需要动态获得字符串的长度,通过循环来判断字符串结束标志“\0”虽然也能获得字符串的长度,但是实现起来相对较烦琐,这时可以使用strlen函数来计算字符串的长度。strlen函数的语法格式如下:

9a5cc887d8ef4227af6de31d27b47122.png

功能:计算字符串的实际长度(不含字符串结束标志“\0”),函数返回值为字符串的实际长度。

例5:定义两个字符数组,用来存储用户输入的字符串,然后调用strlen函数计算字符串长度,调用strcat函数将两个字符串连接在一起,并再次调用strlen函数计算连接后的字符串长度

#define _CRT_SECURE_NO_WARNINGS  //便于调用scanf
#include<stdio.h>
#include<string.h>  //便于进行字符串处理
int main() {
	char text[20], connect[20];  //定义字符串变量
	int n;  //定义整数型变量
	
	printf("输入一个字符串:\n");  //提示信息
	scanf("%s", &text);  //获取输入字符串
	n = strlen(text);  //计算字符串长度
	printf("字符串长度为:%d\n", n);  //输出字符串长度
	printf("再输入一个字符串:\n");  //提示信息
	scanf("%s",&connect);  //获取输入字符串
	n = strlen(connect);  //计算字符串长度
	printf("字符串长度为:%d\n", n);  //输出字符串长度
	//连接字符串
	strcat(text, connect);
	printf("将两个字符串进行连接:%s\n", text);  //计算连接后的字符串
	n = strlen(text);  //计算字符串长度
	printf("字符串长度为:%d\n", n);  //输出字符串长度
	return 0;  //结束,无用时可省略
}

运行结果:

b1044ee9ca8c45c686db49053bea524f.png

 

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

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

相关文章

张驰咨询:用六西格玛方法降低锂电池内部短路缺陷

锂电池作为现代电子设备中最常用的电池类型之一&#xff0c;由于其高能量密度和长寿命等优点&#xff0c;已经广泛应用于手机、笔记本电脑、电动车等领域。然而&#xff0c;在锂电池制造过程中&#xff0c;由于材料、工艺、设备等多种因素的影响&#xff0c;会产生内部短路的问…

基于麻雀算法改进的SVM电器启动识别,基于麻雀算法优化SVM分类预测

目录 摘要 背影 Eggholder测试函数 MATALB编程 测试函数代码 麻雀算法原理 麻雀算法主要参数 麻雀算法流程图 麻雀算法优化测试函数代码 基于麻雀算法改进的SVM电器启动识别 matlab编程实现 效果图 结果分析 展望 摘要 麻雀算法理论&#xff0c;SSA-SVM,电器启动识别&#x…

Android开发之简单控件

文章目录一 文本显示1.1 文本设置的两种方式1.2 常见字号单位类型2.2 设置文本的颜色三 视图基础3.1 设置视图的宽高3.2 设置视图的间距3.3 设置视图的对齐方式四常用布局4.1 线性布局LinearLayout4.2 相对布局RelativeLayout4.3 网格布局GridLayout4.4 滚动视图ScrollView五 按…

【uni-app教程】二、UniAPP 初始化相关配置

二、UniAPP 初始化相关配置 (1)工程目录结构 https://uniapp.dcloud.net.cn/tutorial/project.html#目录结构) 工程简介 一个工程&#xff0c;就是一个 Vue 项目&#xff0c;你可以通过 HBuilderX 或 cli 方式快速创建 uni-app 工程&#xff0c;详见&#xff1a;快速上手。 …

arduino烧录引导程序(BootLoader)方法及出错点

文章目录一、硬件电路准备1、328P的管脚图2、电路连接图&#xff08;1&#xff09;连接图&#xff08;2&#xff09; ISP连接及端口介绍&#xff08;3&#xff09;管脚连接对应表1、准备ArduinoISP2、使用Arduino as ISP烧录设置Arduino板为烧写器3、烧录及错误4、为新烧录328p…

无代码开发浅谈

前 言互联网共享软件工厂KAPT无代码开发平台&#xff0c;提供了可视化编程方法&#xff0c;经过拖拽组件&#xff0c;就像做ppt一样&#xff0c;快速的就能搭建一个软件应用&#xff0c;更高效的构建业务应用程序。以前开发软件大多只能编写代码完成&#xff0c;所以有软件开发…

Mit6.S081-实验1-Xv6 and Unix utilities-pingpong问题

Mit6.S081-实验1-Xv6 and Unix utilities-pingpong问题在进行pingpong实验的时候遇到了许多问题在这里记录一下。 1.输出乱序问题 出现这个问题主要是因为没有弄懂wait(0)的作用&#xff0c; wait(0)暂时停止目前进程的执行&#xff0c;直到信号来到或子进程结束&#xff0c;…

如何让自动化测试框架更自动化?

一、引言 ​对于大厂的同学来说&#xff0c;接口自动化是个老生常谈的话题了&#xff0c;毕竟每年的MTSC大会议题都已经能佐证了&#xff0c;不是大数据测试&#xff0c;就是AI测试等等&#xff08;越来越高大上了&#xff09;。不可否认这些专项的方向是质量智能化发展的方向…

csgo搬砖项目,真的能月入6k?

01 相信很多粉丝都知道steam这个平台&#xff0c;steam是一个游戏平台&#xff0c;这里面的游戏都是要通过去充值购买才能去玩&#xff0c;有的是买游戏的账号&#xff0c;有的是买这个游戏的使用权&#xff0c;买了之后安装到手机上或者电脑上我们才能去畅玩游戏&#xff0c;…

【人工智能 Open AI 】我们程序员真的要下岗了- 全能写Go / C / Java / C++ / Python / JS 人工智能机器人

文章目录[toc]人工智能 AI Code 写代码测试用golang实现冒泡排序用golang实现计算环比函数goroutine and channel用golang实现二叉树遍历代码用golang实现线程安全的HashMap操作代码using C programming language write a tiny Operation Systemuse C language write a tiny co…

【9】SCI易中期刊推荐——工程技术-计算机:软件工程(中科院4区)

🚀🚀🚀NEW!!!SCI易中期刊推荐栏目来啦 ~ 📚🍀 SCI即《科学引文索引》(Science Citation Index, SCI),是1961年由美国科学信息研究所(Institute for Scientific Information, ISI)创办的文献检索工具,创始人是美国著名情报专家尤金加菲尔德(Eugene Garfield…

电脑C盘满了,怎么清理c盘空间?

电脑的C盘是系统盘&#xff0c;存储着操作系统和软件等关键文件&#xff0c;因此当C盘空间不足时&#xff0c;电脑的性能和稳定性都会受到影响。 真实案例&#xff1a;c盘空间莫名其妙变小&#xff1f; “C盘快满了不敢乱删&#xff0c;请问该如何清理&#xff1f;” “求大佬…

八股文(一)

一、箭头函数和普通函数有什么区别 (1)箭头函数比普通函数更加简洁 (2)箭头函数没有自己的this 箭头函数不同于传统JavaScript中的函数&#xff0c;箭头函数并没有属于⾃⼰的this&#xff0c;它所谓的this是捕获其所在上下⽂的 this 值&#xff0c;作为⾃⼰的 this 值&#…

希赛PMP模拟题2022(第9套)

希赛PMP模拟题2022&#xff08;第9套&#xff09; 22 需求和范围 区别 21 什么阶段&#xff1f; 在开发过程中不断衡量 价值 和优先级关系排序20 产品路线图 回顾 团队沟通方式 无法面对面沟通时候 其他人参与 了解项目 需求发布计划 风险 排序发表计划 vs 评审会议 老母鸡 是…

ESP-C3入门14. 实现基本的web server

ESP-C3入门14. 实现基本的web server一、ESP32 IDF创建WEB SERVER的流程1. 配置web服务器2. 注册 URI处理器3. 实现 URI处理器函数4. 处理HTTP请求5. 处理web socket连接6. 注册 URI 处理函数7. 启动HTTP服务器8. 发送响应9. 关闭 http 服务二、本要主要使用API的说明1. httpd_…

编码器的作用和功能有哪些

编码器的作用和功能有哪些 最近很多咨询编码器的作用的&#xff0c;小编结合一下线上和线下的资料&#xff0c;总结了一下&#xff0c;供大家参考。 要说编码器&#xff0c;它的作用很多&#xff0c;主要是用来测量机械运动的速度、位置、角度、距离或计数的&#xff0c;编码器…

SkyWalking使用案例-2

文章目录SkyWalking实现基于容器环境Dubbo微服务链路跟踪部署Dubbo Provider构建Dubbo Provider镜像运行dubbo-provider部署Dubbo Consumer构建Dubbo Consumer镜像运行dubbo-consumer验证SkyWalking收集python项目数据Skywalking告警Skywalking指标Skywalking告警规则SkyWalkin…

62. 不同路径

62. 不同路径 一个机器人位于一个 m∗nm * nm∗n 网格的左上角 &#xff08;起始点在下图中标记为 “Start” &#xff09;。 机器人每次只能向下或者向右移动一步。机器人试图达到网格的右下角&#xff08;在下图中标记为 “Finish” &#xff09;。 问总共有多少条不同的路…

virtualbox7虚拟机中安装苹果macOS big sur系统详细教程

第1步&#xff0c;在 Windows 10/11 PC 上启用虚拟化。 现在的电脑一般都默认开启虚拟化技术了。 如果你遇到一些报错&#xff0c;比如收到错误消息“无法在虚拟机上打开会话”&#xff0c;可以查看 如果没有遇到问题&#xff0c;可以直接进入到第二步。 第2步&#xff0c;在…

【Spark分布式内存计算框架——Spark Streaming】12. 偏移量管理(上)代码重构与Checkpoint 恢复

6. 偏移量管理 针对前面实现【百度热搜排行榜Top10】实时状态统计应用来说&#xff0c;当应用关闭以后&#xff0c;再次启动&#xff08;Restart&#xff09;执行&#xff0c;并没有继续从上次消费偏移量读取数据和获取以前状态信息&#xff0c;而是从最新偏移量&#xff08;L…