目录
strtok的使用
strerror的使用
strstr的使用和函数模拟实现
strstr的使用
strstr函数模拟实现
接上篇:保姆级讲解字符串函数(上篇),我们接着把剩下三个函数讲解完,继续跟着我的步伐一起学习呀.
strtok的使用
函数模型:char* strtok(char* str ,const char* sep)
#include<stdio.h>
#include<string.h>
int main()
{
char ch1[] = "baizihuan@qq.com";
char ch2[50] = { 0 };
strcpy(ch2, ch1); //strcpy拷贝,将ch1的字符串拷贝到ch2,是因为strtok函数会改变被操作字符串,所以要保留原本字符串的内容
char* p = "@."; //定义用作分隔字符的集合:“@.”
char* s = NULL;
for (s = strtok(ch2, p); s != NULL; s = strtok(NULL, p))
{
printf("%s\n", s);
}
return 0;
}
那这个strtok有什么作用呢?,我们先看控制台输出显示
给出一个字符串,自定义分隔字符串
代码的for循环解释:
strerror的使用
1.函数原型:char* strerror(int errnum)
2.包含头文件:#include<errno.h>
#include<errno.h>
int main()
{
int i = 0;
for (i = 0; i < 10; i++)
{
printf("%d : %s\n", i, strerror(i));
}
return 0;
}
控制台输出显示:
注:
1.C语⾔程序启动的时候就会使⽤⼀个全⾯的变量errno来记录程序的当前错误码,只不过程序启动的时候errno是0,表示没有错误;
2.当我们在使⽤标准库中的函数的时候发⽣了某种错误,就会讲对应的错误码,存放在errno中,⽽⼀个错误码的数字是整数很难理解是什么意思,所以每⼀个错误码都是有对应的错误信息的。
3.strerror函数就可以将错误对应的错误信息字符串的地址返回。
关于输出在也可以了解perror函数,我会在接下来的文件操作会讲到
strstr的使用和函数模拟实现
strstr的使用
函数原型:char* strstr(const char* str1,const char* str2)
作用:函数返回字符串str2在字符串str1中第一次出现的位置
int main()
{
char str1[] = "abcdefg";
char str2[] = "bcd";
char* ret = strstr(str1, str2);
if (ret != NULL)
printf("%s\n", ret);
else
printf("找不到\n");
return 0;
}
控制台显示输出 :bcdefg
strstr函数模拟实现
char* my_strstr(const char* s1, const char* s2)
{
const char* p = s1; //用指针标记字符串s1的初始位置
const char* a1 = NULL;
const char* a2 = NULL;
assert(s1 && s2); //保证指针的有效性
if (*s2 == '\0')
return (char*)s1; //如果s2解引用是'\0',返回s1
while (*p)
{
a1 = p;
a2 = s2;
while (*a1 && *a2 && *a1 == *a2)
{
a1++;
a2++;
}
if (*a2 == '\0')
{
return (char*)p;
}
p++;
}
return NULL; //如果找不到,返回NULL指针
}
int main()
{
char str1[] = "abcdefg";
char str2[] = "bbcdefg";
char* ret = my_strstr(str1, str2);
if (ret != NULL)
printf("%s\n", ret);
else
printf("找不到\n");
return 0;
}
控制台输出:找不到
函数代码中while循环讲解
***********************************************************分割线*****************************************************************************
完结!!!
感谢浏览和阅读。
等等等等一下,分享最近喜欢的一句话:“山高水长,怕什么来不及,慌什么到不了,天顺其然,地顺其性,一切都是刚刚好。”
我是白子寰,如果你喜欢我的作品,不妨你留个点赞+关注让我知道你曾来过。
你的点赞和关注是我持续写作的动力!!!
好了划走把。