【c语言12】字符串函数(strlen,strcmp,strcpy,strcat,strstr,strtok,strerror)

news2024/11/25 22:43:37

请添加图片描述

文章目录

  • 一、字符串函数
    • 1.1strlen(求字符串长度)
    • 1.2strcmp(比较字符串)
    • 1.3strcpy(拷贝字符串)
    • 1.4strcat(追加字符串)
    • 1.5strstr(判断子串)
    • 1.6sttok(字符串分割 )
    • 1.7strerror(返回错误码)
  • 总结

库函数(Library function)是把函数放到库里,供别人使用的一种方式。.方法是把一些常用到的函数编完放到一个文件里,供不同的人进行调用。调用的时候把它所在的文件名用#include<>加到里面就可以了。一般是放到lib文件里的。
一般是指编译器提供的可在c源程序中调用的函数。可分为两类,一类是c语言标准规定的库函数,一类是编译器特定的库函数。
今天我要介绍的是字符串函数。

一、字符串函数

1.1strlen(求字符串长度)

strlen函数通常用于计算字符串长度,需要注意的是,如果初始化的字符串中没有’\0’存在,那么他计算的长度是随机值。
代码详情:

int main()
{
	char arr[] = "hello world";
	//strlen函数的参数是字符串的首地址,
	//同时计算的长度需要保存在整型变量中;
	int len = strlen(arr);
	printf("%d", len);
	return 0;
}

运行结果
在这里插入图片描述

1.2strcmp(比较字符串)

strcmp函数通常用于比较字符串,且比较的是字符的ASCII码值。该字符串的参数是
strcmp(str1 – 要进行比较的第一个字符串,str2 – 要进行比较的第二个字符串。)
该函数返回值如下:
如果返回值小于 0,则表示 str1 小于 str2。
如果返回值大于 0,则表示 str1 大于 str2。
如果返回值等于 0,则表示 str1 等于 str2。
strcmp比较的过程为:当首地址指向的
代码详解

int main()
{
	char arr[] = "hello world";
	char bit[] = "hello bit";
	int size = strcmp(arr, bit);//strlen的详细参数
	if (size < 0)//判断
	{
		printf("arr<bit\n");
	}
	else if(size == 0)
	{
		printf("arr=bit\n");

	}
	else
	{
		printf("arr>bit\n");
	}

	return 0;
}

比较结果
在这里插入图片描述
因为arr的第七个字符’w’的ASCII码值大于bit的‘b";
所以arr>bit;

1.3strcpy(拷贝字符串)

strcpy函数通常用于把一个字符串拷贝到另一个字符串中,注意被拷贝的字符串的空间必须足够大,否则会出现数值溢出的报错。
代码详解

int main()
{
	char arr[20];
	char *p = "hello csdn";
	strcpy(arr, p);//使用指针拷贝
	char str[] = "hello world";
	char arr2[20];
	strcpy(arr2, str);//使用字符串首地址拷贝
	printf("%s\n", arr);
	printf("%s\n", arr2);

	return 0;
}

我们注意到,使用指针一样是可以拷贝字符串的,这是因为,strcmp需要的函数只需要是指向字符串首字符的指针即可
运行结果

在这里插入图片描述

1.4strcat(追加字符串)

strcat函数的作用是追加字符串,该函数的作用与strcpy函数类似,但不相同,作者目前学习的程度也无法详细的解读出来。等学习到位,一定补上
代码详解

int main()
{
	char Moon[100] = "今夜月色真美";
	char wind[] = " 风也温柔";
	strcat(Moon, wind);//把wind字符串中的内容追加到Moon的词尾后
	printf("%s", Moon);
	return 0;
}

运行结果
在这里插入图片描述

1.5strstr(判断子串)

strstr函数的作用是判断字符串中是否含有另一个字符串的内容。当找到时,返回主串中存在子串的位置,如果不存在,返回NULL。文字描述可能有些绕口,我们还是尽量用代码来解释
代码详解

int main()
{
	char arr[] = "hello world i live you";
	char str[] = "world";
	char *ret = strstr(arr, str);//ret接受的是arr中str字符串的起始位置
	printf("%s", ret);
	return 0;
}

运行结果
在这里插入图片描述
同时,我们可以利用他返回的特性,判断主串中是否存在子串
例如
在这里插入图片描述
c语言真是一个奇妙的语言啊,越学越能感受到先辈们的智慧

1.6sttok(字符串分割 )

strtok函数的作用是:首先定义一个字符集合体,该集合体包含了你想分割字符。依然代码说话
代码详解

int main()
{
	char mailbox[] = "Nancat@bi,sheng.com";//主串
	char arr[] = "@,.";//需要分割的符号集合体
	char* ret = NULL;
	for (ret = strtok(mailbox, arr); ret != NULL; ret = strtok(NULL, arr))
	{
		printf("%s\n", ret);
	}
	return 0;
}

运行结果
在这里插入图片描述
成功分割了主串

1.7strerror(返回错误码)

strerror函数通常判断错误。是比较常用的一个库函数,它可以清晰的告诉你是什么原因造成的错误,非常~
好用;
代码详解

int main()
{
	FILE* p = fopen("red.exe", "r");
	if (p == NULL)
	{
		printf("%s", strerror(errno));
	}
	return 0;
}

运行结果
在这里插入图片描述

总结

c语言学无止境,我只是学习道路上微不足道的过路人,如果有大佬看到了我的这篇博客,希望多多指导,感谢所有看完博客以及为我指出缺点的人。

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

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

相关文章

【C/C++】使用类和对象 封装链表

创作不易&#xff0c;本篇文章如果帮助到了你&#xff0c;还请点赞 关注支持一下♡>&#x16966;<)!! 主页专栏有更多知识&#xff0c;如有疑问欢迎大家指正讨论&#xff0c;共同进步&#xff01; &#x1f525;c系列专栏&#xff1a;C/C零基础到精通 &#x1f525; 给大…

SpringMVC全套详解

1、SpringMVC是什么1.1、MVC定义1.2、MVC和 SpringMVC的关系2.创建SpringMVC项目 2.1、SpringMVC 链接2.2、RequestMapping 注解说明2.3 、 GetMapping 和 PostMapping 3、获取参数3.1、传递单个参数3.2、传递多个参数/表单参数传递3.3、传递对象3.4、后端参数重命名(后端参数映…

C语言笔记-1

文章目录 C 基础语法注意 C 其他知识点编译过程编译器数据模型区别32/64位机器中&#xff0c;各数据类型所占位数assert() 断言&#xff08;宏&#xff09;用法总结与注意事项 C 基础语法 注意 if(a表达式) 判断的就是a的值&#xff0c;而不是判断这个赋值操作的成功与否。 查…

老天如果给我一次重来的机会,我还会选测试

在我们选择测试这行前&#xff0c;想象总是美好&#xff0c;然而现实无比扎心。 在办公环境上 想象中&#xff1a;美女&#xff08;帅哥&#xff09;环绕&#xff0c;前卫时尚&#xff0c;拥有独立办公间&#xff0c;没事转转座椅&#xff0c;偶尔来点咖啡和音乐。 现实中&…

【数据结构与算法C++实现】2、二分查找

原视频为左程云的B站教学 1 在有序数组中查找特定元素 基本思想是通过比较中间元素与目标元素的大小关系&#xff0c;将查找范围缩小一半&#xff0c;直到找到目标元素或查找范围为空为止。 时间复杂度O(logN) 因为比如说数组个数为N16, 最差的情况要分 4 次 ( [ 8 ∣ 8 ] →…

变化太快的Roop项目(版本1.0.1)

文章目录 &#xff08;一&#xff09;版本1.0.1的变化&#xff08;1.1&#xff09;项目依赖&#xff08;1.2&#xff09;模型位置&#xff08;1.3&#xff09;命令行&#xff08;1.4&#xff09;界面UI&#xff08;1.5&#xff09;处理与结果 最早的&#x1f517;接触和介绍&am…

带三维重建和还原功能的医学影像管理系统(pacs)源码

一、概述 它集影像存储服务器、影像诊断工作站及RIS报告系统于一体,主要由图像处理模块、影像数据管理模块、RIS报告模块、光盘存档模块、DICOM通讯模块、胶片打印输出等模块组成&#xff0c; 具有完善的影像数据库管理功能&#xff0c;强大的图像后处理功能&#xff08;三维重…

2-css-3

一 选择器 1 结构伪类选择器 作用&#xff1a;根据元素的结构关系查找元素。 选择器说明E:first-child查找第一个E元素E:last-child查找最后一个E元素E:nth-child(N)查找第N个E元素&#xff08;第一个元素N值为1&#xff09; li:first-child {background-color: green; }2 :…

AgilePLM应用周期性崩溃-问题解决

​ 问题现象 每周六2点左右&#xff0c;AgilePLM应用进程都会崩溃&#xff0c;具体表现为登录Agile应用服务器之后&#xff0c;找不到weblogic应用进程&#xff08;ps -ef | grep java&#xff09;。从服务器所有相关日志中没有找到任何可疑的异常日志。 当天Agile应用重启之…

UDS通信服务解析

InputOutputControlByIdentifier (0x2F)----通过ID对输入输出进行控制 2F的03子功能是"暂时接管控制权" ReadDataByIdentifier(0x2A)—通过ID读取数据或特定器件状态 ClearDiagnosticInformation(0x14)—清除故障诊断信息 UDS规定用FF FF FF表示所有种类的DTC Rou…

技术干货 | 开始使用 Redis

Redis 是一个使用 C 语言编写的开源、BSD 许可、高级的键值存储&#xff0c;。它也被称为数据结构服务器&#xff0c;因为键可以包含字符串、哈希、列表、集合和有序集合。本教程将介绍使用 Redis 所需的基本概念。Navicat Premium 和 Navicat for Redis 现已支持 Redis, 如果你…

【AUTOSAR】AUTOSAR开发工具链(十一)----基于BTC的back to back测试操作说明(3)

四、PowerWindow demon BTB测试 1、对于MBD生成代码&#xff0c;可以通过上文中使用Embeded-Coder的方式添加工程文件&#xff0c;然后切换到back to back 测试模式 2、点击Generate Stimuli Vectors &#xff0c;进入自动生成测试用例 选择测试用例的生成引擎 设置信号的使用…

2021年国赛高教杯数学建模D题连铸切割的在线优化解题全过程文档及程序

2021年国赛高教杯数学建模 D题 连铸切割的在线优化 原题再现 连铸是将钢水变成钢坯的生产过程&#xff0c;具体流程如下&#xff08;图 1&#xff09;&#xff1a; 钢水连续地从中间包浇入结晶器&#xff0c;并按一定的速度从结晶器向下拉出&#xff0c;进入二冷段。钢水经过…

js中几种实用的跨域方法原理详解

一、通过jsonp跨域 在js中&#xff0c;我们直接用XMLHttpRequest请求不同域上的数据时&#xff0c;是不可以的。但是&#xff0c;在页面上引入不同域上的js脚本文件却是可以的&#xff0c;jsonp正是利用这个特性来实现的。 比如&#xff0c;有个a.html页面&#xff0c;它里面…

微服务系列文章之 Springboot集成Jersey

​ Springboot支持Jersey1.x和Jersey2.x&#xff0c;我们这里只介绍Springboot对Jersey2.x的支持。springboot对jersey的集成非常简单。 ​ 项目结构&#xff1a; 1、引入Springboot对Jersey的starter包 <dependencies><dependency><groupId>org.springfram…

(一)python实战——使用Pyinstaller打包一个python的exe可执行文件

前言 在python编程中&#xff0c;我们往往需要将我们的应用程序打包成一个可执行文件&#xff0c;方便使用。如果是单独的python文件&#xff0c;其他人使用前必须要先安装python环境&#xff0c;在python环境中通过命令执行我们的python程序。本节内容我们主要介绍一下使用Py…

团体程序设计天梯赛-练习集L2篇⑥

&#x1f680;欢迎来到本文&#x1f680; &#x1f349;个人简介&#xff1a;Hello大家好呀&#xff0c;我是陈童学&#xff0c;一个与你一样正在慢慢前行的普通人。 &#x1f3c0;个人主页&#xff1a;陈童学哦CSDN &#x1f4a1;所属专栏&#xff1a;PTA &#x1f381;希望各…

数据结构--算法时间复杂度

数据结构–算法时间复杂度 在计算算法时间复杂度的时候&#xff0c;我们可以忽略表达式某些部分。 eg&#xff1a; T 1 ( n ) 3 n 3 T_1(n) 3n 3 T1​(n)3n3 ⇒ O ( n ) O(n) O(n) T 2 ( n ) n 2 3 n 1314 T_2(n) n^23n1314 T2​(n)n23n1314 ⇒ O ( n 2 ) O(n^2) O…

【嵌入式烧录/刷写文件】-S19文件解析(首行数据解析)

目录 一、概述二、S19文件解析三、举例 一、概述 &#xff11;.概述&#xff1a; Motorola S-record是一种文件格式&#xff0c;由摩托罗拉在20世纪70年代中期为Motorola 6800处理器创建&#xff0c;以ASCII文本形式传达二进制信息的十六进制值&#xff0c;其文件格式也可能为…

Microsoft Fabric 学习----- Lakehouse vs Warehouse

做了几年Power BI 开发人员&#xff0c;微软最近上发布了Microsoft Fabric, 对它的研究安排起来! 从微软官方中文文档入手 Microsoft Fabric 中的端到端教程 - Microsoft Fabric | Microsoft Learn Microsoft Fabric 是将 Power BI、Azure Synapse 和 Azure 数据资源管理器中…