字符串函数
前言
今天给大家介绍两个并不太常见的字符串函数以及他们的使用。分别是strtok和strerror。其中,strtok可以用来分隔字符串,而strerror可以用来打印错误信息。
一、strtok
首先来看一下函数原型:
char * strtok ( char * str, const char * sep );
第一个参数str就是我们需要进行字符串分隔的字符串。
第二个参数sep是一个字符串,字符串中的字符都是用来进行分隔的字符。当然,这需要在第一个参数的字符串中存在这些标记才行。
下面,我们来介绍以下这个函数的用法:
- strtok函数找到str中的一个标记,并将其用 \0 结尾,返回一个指向这个标记前字符串的指针。(注:strtok函数会改变被操作的字符串,所以在使用strtok函数切分的字符串一般都是临时拷贝的内容并且可修改。)
- strtok函数的第一个参数不为 NULL ,函数将找到str中第一个标记,strtok函数将保存它在字符串中的位置。(这是strtok的第一次使用,传入的第一个参数就是要分隔的字符串)
- strtok函数的第一个参数为 NULL ,函数将在同一个字符串中被保存的位置开始,查找下一个标记。(这是后续的strtok的使用,第一个参数要传入NULL)
- 如果字符串中不存在更多的标记,则返回 NULL 指针。(此时对一个字符串的分隔就完成了)
我们来通过一个例子深入了解一下:
int main()
{
char* p = "http/gitee.com/yang_jian_c";
const char* sep = "./";
char arr[30];
char* str = NULL;
strcpy(arr, p);//将数据拷贝一份,处理arr数组的内容
for (str = strtok(arr, sep); str != NULL; str = strtok(NULL, sep))
{
printf("%s\n", str);
}
return 0;
}
下面请看结果:
如同结果所示,strtok函数会根据我们传入第二个参数的内容对第一个参数进行分隔。得到我们想要的结果。
二、strerror
这个strerror函数的作用就是根据错误的类型返回错误信息,先来让我们看一下它的函数原型:
char * strerror ( int errnum );
这个函数的参数是一个整型,它代表了发生错误的错误码。
在我们程序运行的过程中,如果发生了错误,这个错误码就会随之发生改变,我们就可以利用这个特性,当发生错误是,错误码改变,我们就根据错误码打印相应的错误信息。
当然这个错误码的定义也在一个头文件中,我们要用时必须调用相应的头文件。
我们通过一段代码来深入的了解一下它的使用,这段代码的作用就是根据文件名打开相应文件,但是在当前目录下我并没有创建该文件,会如何呢?
代码如下:
#include <stdio.h>
#include <string.h>
#include <errno.h>//必须包含的头文件
int main()
{
FILE* pFile;
pFile = fopen("unexist.ent", "r");
if (pFile == NULL)
printf("Error opening file unexist.ent: %s\n", strerror(errno));
//errno: Last error number
return 0;
}
我们再来看一下它的结果:
可见,错误信息就相应的打印在了屏幕上。
欢迎大家批评指正!