前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >带你搞清楚strtok函数和strerror函数的使用!

带你搞清楚strtok函数和strerror函数的使用!

作者头像
用户11036582
发布2024-03-21 18:31:26
780
发布2024-03-21 18:31:26
举报

给大家分享一句我很喜欢我话: 知不足而奋进,望远山而前行!!! 铁铁们,成功的路上必然是孤独且艰难的,但是我们不可以放弃,远山就在前方,但我们能力仍然不足,所有我们更要奋进前行!!! 今天我们更新了strtok和strerror函数使用的内容, 🎉 欢迎大家关注🔍点赞👍收藏⭐️留言📝

一、strtok函数的使用

char * strtok ( char * str, const char * sep); char * strtok ( char * str, const char * sep);

我们先来看一下strtok函数的形式,是char*类型的,下面我们来介绍一下他的作用:

• sep参数指向⼀个字符串,定义了⽤作分隔符的字符集合

• 第⼀个参数指定⼀个字符串,它包含了0个或者多个由sep字符串中⼀个或者多个分隔符分割的标

记。

• strtok函数找到str中的下⼀个标记,并将其⽤ \0 结尾,返回⼀个指向这个标记的指针。(注:

strtok函数会改变被操作的字符串,所以在使⽤strtok函数切分的字符串⼀般都是临时拷⻉的内容

并且可修改。)

• strtok函数的第⼀个参数不为 比特就业课主页:https://m.cctalk.com/inst/s9yewhfr

NULL ,函数将找到str中第⼀个标记,strtok函数将保存它在字符串

中的位置。

• strtok函数的第⼀个参数为 NULL ,函数将在同⼀个字符串中被保存的位置开始,查找下⼀个标

记。

• 如果字符串中不存在更多的标记,则返回 NULL 指针

只看这些这些概念还是显得有些抽象,下面我们来举一些例子来说明他的作用:

代码语言:javascript
复制
#include <stdio.h>
#include <string.h>

 int main()
 {
 char arr[] = "192.168.6.111";
 char* sep = ".";
 char* str = NULL;
for (str = strtok(arr, sep); str != NULL; str = strtok(NULL, sep))
 {
 printf("%s\n", str);
 }
 return 0;
 }

我们来看一下这串代码,这串代码的作用是将给定的192.168.6.111以.为分割线分别打印字符串,看这串代码之前,我们先来看一下strtok函数,其实他的作用呢

就是传过去一串代码,传过去一个sep参数,sep参数的就是指一个用于分割的东西,在这串代码中就是指的那个.,然后我们再来看这串代码,思路就是我们先创建了一个字符串,然后创建sep标记,然后用一个for循环,for循环中,第一个是str,str就是一次分割之后传回来的字符串,然后我们打印他,然后str只要不等于NULL(空指针),这个循环就会继续,然后str再次进行strtok分割,最后分割完成。

接下来就会打印出我们想要的效果;

二、strerror函数的使用

char* strerror( int errnum );

我们先来看一下这个字符串函数的作用:

strerror函数可以把参数部分错误码对应的错误信息的字符串地址返回来。

在不同的系统和C语⾔标准库的实现中都规定了⼀些错误码,⼀般是放在 errno.h 这个头⽂件中说明

的,C语⾔程序启动的时候就会使⽤⼀个全⾯的变量errno来记录程序的当前错误码,只不过程序启动

的时候errno是0,表⽰没有错误,当我们在使⽤标准库中的函数的时候发⽣了某种错误,就会讲对应

的错误码,存放在errno中,⽽⼀个错误码的数字是整数很难理解是什么意思,所以每⼀个错误码都是

有对应的错误信息的。strerror函数就可以将错误对应的错误信息字符串的地址返回。

下面我们来看一串代码:

代码语言:javascript
复制
int main()
{
	for (int i = 0; i <= 10; i++)
	{
		printf("%d:  %s\n", i, strerror(i));
	}

	return 0;
}

这串代码的作用是用来打印0-10的错误码,下面我们运行一下试试:

我们便可以得到这些数的错误信息。

当我们了解到之后,我来教大家如何去验证它:

但这里会涉及一些我们后面才会学到的知识。

代码语言:javascript
复制
#include<errno.h>
int main()
{
	FILE*pf = fopen("test.txt", "r");
	//fopen以读的形式打开文件时,如果文件不存在,就会打开失败
	if (pf == NULL)
	{
		printf("%s\n", strerror(errno));
		return 1;
	}


	fclose(pf);
	return 0;
}

看这串代码,我们打算打开一个文件test.txt,但是我们的文件夹里边没有这个文件,所以肯定会打开失败,那么失败的=时使用strerroer便会得到打开失败的原因:

便会这样,没有这个文件。

代码语言:javascript
复制
#include<errno.h>
int main()
{
	FILE*pf = fopen("test.txt", "r");//这里是打开文件并且读文件的意思
	//fopen以读的形式打开文件时,如果文件不存在,就会打开失败
	if (pf == NULL)
	{
		perror("the cause of faliure: ");
		return 1;
	}


	fclose(pf);//关闭文件。
	return 0;
}

在看这个代码,我们使用perror,这个也可以显示错误信息,并且加上一个自己输入的字符串

就像这样。perror就像但与printf加上一个error。

总结:

总的来说,strtok函数和strerror函数都是在C语言中常用的字符串处理函数。strtok函数用于字符串的分割,而strerror函数用于获取错误信息字符串。使用这两个函数可以方便地进行字符串处理和错误处理,提高程序的可读性和可靠性。

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2024-03-12,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 一、strtok函数的使用
  • 二、strerror函数的使用
  • 总结:
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档