本篇文章介绍c语言库函数strstr()、strtok()、strerror()的使用。
strstr()实现的是查找子字符串。
下面是cplusplus网站关于这个库函数的介绍以及使用。
说明:
参数str1:被扫描的字符串
参数str2:需要查找的子字符串
返回值:
返回值不为NULL,说明在str1存在str2,返回str1第一次出现str2的首字符地址
返回值为NULL,说明str1不存在str2
strstr()的使用:
实现思路:
指针变量pstr1保存每一次比较的起始位置
步骤一:指针变量s1初始化为pstr1
步骤二:指针变量s2初始化为str2
步骤三:指针变量s1和指针变量s2循环比较
步骤四:如果s2指向了\0,说明比较完成,返回pstr1;否则pstr1++,重复以上步骤。
步骤五:循环结束,返回NULL
代码实现:
char* my_strstr(const char* str1, const char* str2)
{
assert(str1 && str2); //空指针判断
const char* s1 = str1;
const char* s2 = str2;
const char* pstr1 = str1;
//psrt1记住的是s1比较的起始位置
while (*pstr1)
{
s1 = pstr1;
s2 = str2;
//比较
while (*s1 != '\0' && *s2 != '\0' && *s1 == *s2)
{
s1++;
s2++;
}
//判断s2是否对比到\0
//比较到\0,说明子串匹配
//比较不到\0,说明子串不匹配
if (*s2 == '\0')
{
return (char*)pstr1;
}
pstr1++;
}
return NULL;
}
代码测试:
strtok()实现的是切割字符串。
下面是cplusplus网站关于这个库函数的介绍以及使用。
说明:
strtok()的使用:
切割过程:
思考:
如何保留上一次切割的标记位置?
利用static关键字
关于static关键字的作用,可以查看在c语言基础专栏的一篇文章:
https://blog.csdn.net/pyc68/article/details/134887444
strerror()返回的是错误码对应的错误信息。
下面是cplusplus网站关于这个库函数的介绍以及使用。
说明:
strerror()的使用:
本篇文章介绍了strstr()、strtok()、strerror()库函数的使用。