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

9efbcbc3d25747719da38c01b3fa9b4f.gif

 c语言中的小小白-CSDN博客c语言中的小小白关注算法,c++,c语言,贪心算法,链表,mysql,动态规划,后端,线性回归,数据结构,排序算法领域.https://blog.csdn.net/bhbcdxb123?spm=1001.2014.3001.5343

给大家分享一句我很喜欢我话:

知不足而奋进,望远山而前行!!!

铁铁们,成功的路上必然是孤独且艰难的,但是我们不可以放弃,远山就在前方,但我们能力仍然不足,所有我们更要奋进前行!!!

今天我们更新了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 指针

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

#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函数就可以将错误对应的错误信息字符串的地址返回。

下面我们来看一串代码:

int main()
{
	for (int i = 0; i <= 10; i++)
	{
		printf("%d:  %s\n", i, strerror(i));
	}

	return 0;
}

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

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

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

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

#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便会得到打开失败的原因:

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

#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函数用于获取错误信息字符串。使用这两个函数可以方便地进行字符串处理和错误处理,提高程序的可读性和可靠性。

  • 21
    点赞
  • 23
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值