IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> C++知识库 -> 字符串函数【C语言-3】 -> 正文阅读

[C++知识库]字符串函数【C语言-3】

??订阅专栏:字符串函数

💚关注博主:翻斗花园第一代码手牛爷爷

🐳前言

续上第二篇,我们接下来继续介绍几种字符串函数,想要熟练的运用字符串函数,对函数的一些实现细节的了解是必不可少的。除此之外,跟应该多加练习,敲起来!

🌸函数介绍

🍀strtok函数

char * strtok ( char * str, const char * delimiters );
字符串切割函数

  • delimiters参数是一个字符串,定义了用作分割符的字符集合。
  • 第一个参数指定一个字符串,它包括了0个或者多个由delimiters字符串中一个或者多个分割符分割的标记。
  • strtok函数找到str中的下一个标记,并将其用\0结尾,返回一个指向这个标记的指针。(strtok函数会改变被操作的字符串,所以在使用strtok函数切分的字符串一般都是临时拷贝的内容并且可以修改)
  • strtok函数的第一个参数不为NULL,函数将找到str中第一个标记,strtok函数将保存他在字符串中的位置。
  • strtok函数的第一个参数为NULL,函数将在同一个字符串中被保存的位置开始,查找下一个标记。
  • 如果字符串中不存在更多的标记,则返回NULL指针。

🌺strtok函数使用

strtok函数和其他字符串函数相比较来说非常特殊,具体的我们用一段代码来分析,如下代码。

#include <stdio.h>
#include <string.h>
int main()
{
	char arr[] = "www.baidu@qq123456789";
	char arr2[50] = { 0 };
	strcpy(arr2, arr);
	const char* p = ".@";
	char* ret = NULL;
	ret = strtok(arr2, p);
	printf("%s\n", ret);
	ret = strtok(NULL, p);
	printf("%s\n", ret);
	ret = strtok(NULL, p);
	printf("%s\n", ret);

	return 0;
}

我们arr数组就是一段字符串数组,我们的p则是指向一段分割符的集合。strtok函数对字符串进行切割就是利用分割符对字符串进行切分,并将分割符修改为\0,然后返回标记的地址。所以我们说在使用strtok函数切分的字符串一般都是临时拷贝的内容并且可以修改。我们来观察运行的结果,如下图。
在这里插入图片描述
我们之所以说strtok这个函数特殊,就是因为如果我们要对一段字符串进行切分的话,我们只需要在第一次调用的时候把字符串传给它,在后面的调用就只需要传NULL给它就行了,该函数具有记忆功能,会在后来的调用自动在上一次的调用的后面继续向后进行,在遇到分割符时,会将分割符再次修改为\0,然后返回这一段的标记地址。我们还可以通过监视窗口观察strtok函数将分割符修改的情况以及返回标记地址的情况,如下图。
在这里插入图片描述
我们可以观察到分割符.@被修改为\0,并且依次返回每一段标记的的首地址。在理解了strtok函数的机制之后,我们可以把代码写的更加简介一点,如下代码。

#include <stdio.h>
#include <string.h>

int main()
{
	char arr[] = "www.baidu@qq123456789";
	char arr2[50] = { 0 };
	strcpy(arr2, arr);
	const char* p = ".@";
	char* ret = NULL;
	for (ret = strtok(arr2, p); ret != NULL;ret = strtok(NULL, p))
	{
		printf("%s\n", ret);
	}
	return 0;
}

??strtok函数模拟实现

#include <stdio.h>
#include <string.h>

char* my_strtok(char* arr, const char* p)
{
	static char* val = NULL;
	if (arr != NULL)
	{
		val = arr;
	}
	else
	{
		val++;
		arr = val;
	}
	if (*val == '\0')
	{
		return NULL;
	}
	else
	{
		while (*val != '\0')
		{
			for (int i = 0; *(p + i) != '\0'; i++)
			{
				if (*val == *(p + i))
				{
					*val = '\0';
					return arr;
				}
			}
			val++;
		}
		return arr;
	}
}

int main()
{
	char arr[] = "www.baidu@qq123456789";
	char arr2[50] = { 0 };
	strcpy(arr2, arr);
	const char* p = ".@";
	char* ret = NULL;
	for (ret = my_strtok(arr2, p); ret != NULL; ret = my_strtok(NULL, p))
	{
		printf("%s\n", ret);
	}
	return 0;
}

🌈strerror函数

char * strerror ( int errnum );
错误打印函数

  • erenum是错误码,在传给strerror函数一个错误码后,函数会返回一个地址,根据地址可以打印错误信息。
  • 错误码是C语言库函数里自带的报错时候的错误码。

??strerror函数使用

strerror函数可以利用错误码转换成错误信息,具体转换我们用代码进行观察,如下代码。

#include <stdio.h>
#include <string.h>

int main()
{
	printf("%s\n", strerror(0));
	printf("%s\n", strerror(1));
	printf("%s\n", strerror(2));
	printf("%s\n", strerror(3));
	printf("%s\n", strerror(4));
	printf("%s\n", strerror(5));

	return 0;
}

错误信息打印如下图。
在这里插入图片描述
我们可以看到,每个错误码都对应着不同的错误信息,我们在程序的设计中,合理的运用strerror函数可以帮助我们更快的找到错误的出处。

??总结

本章介绍了两个字符串函数strtok函数和strerror函数,strtok函数的使用需要注意它的一些特别之处,strerror函数是根据错误码打印错误信息,可以帮助我们快速的找出程序的错误,我们在这就不对strerror函数进行模拟实现。字符串函数的介绍在这里也就告一段落了,希望大家多多支持,如有错误之处还望指正。
在这里插入图片描述

  C++知识库 最新文章
【C++】友元、嵌套类、异常、RTTI、类型转换
通讯录的思路与实现(C语言)
C++PrimerPlus 第七章 函数-C++的编程模块(
Problem C: 算法9-9~9-12:平衡二叉树的基本
MSVC C++ UTF-8编程
C++进阶 多态原理
简单string类c++实现
我的年度总结
【C语言】以深厚地基筑伟岸高楼-基础篇(六
c语言常见错误合集
上一篇文章      下一篇文章      查看所有文章
加:2022-09-30 00:33:07  更:2022-09-30 00:34:41 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年5日历 -2024/5/19 3:29:53-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码