strstr函数和strtok函数

编程入门 行业动态 更新时间:2024-10-26 03:37:04

strstr<a href=https://www.elefans.com/category/jswz/34/1771370.html style=函数和strtok函数"/>

strstr函数和strtok函数

文章目录

  • strstr函数
  • 函数使用
  • 函数模拟实现
  • strtok函数

strstr函数


参数为两个字符串的地址,在str1中找str2不包括结束符。

函数使用


#include<stdio.h>
#include<string.h>int main()
{char* str1 = "abcdeffgmnlo";char* str2 = "de";char str3[] = "fg";char* pc1 = strstr(str1, str2);printf("%s\n", pc1);char* pc2 = strstr(str1, str3);printf("%s\n", pc2);char* pc3 = strstr(str1, "mmm");printf("%s\n", pc3);return 0;
}


函数返回值为在主串中找到的子串首元素地址
打印时以这个地址开始打印找到结束字符停止打印

函数模拟实现

#include<stdio.h>
#include<assert.h>const char* my_strstr(const char* str1, const char* str2)
{assert(str1 && str2);if (*str2 == '\0'){return str1;}const char* cp1 = NULL;const char* cp2 = NULL;const char* pmove = str1;while (pmove != '\0'){cp1 = pmove;cp2 = str2;while (*cp1 == *cp2 && *cp1 != '\0' && *cp2 != '\0'){cp1++;cp2++;}if (*cp2 == '\0'){return pmove;}pmove++;}return NULL;
}int main()
{char* str1 = "abcddefg";char* str2 = "de";char* ret = my_strstr(str1, str2);if (ret == NULL){printf("找不到");}else{printf("%s\n", ret);}return 0;
}

这个函数的模拟实现可以很好的锻炼你的思维,多想多上手。

strtok函数

作用:将一个字符串分割成多个字符串

#include <stdio.h>
#include <string.h>int main()
{char arr[] = "zhangsan@qq";char* p = "@.";char buf[20] = { 0 };strcpy(buf, arr);char* ret = strtok(buf, p);printf("%s\n", ret);ret = strtok(NULL, p);printf("%s\n", ret);ret = strtok(NULL, p);printf("%s\n", ret);return 0;
}


这里的@和.为分隔符,在调用strtok函数时会把这两个分隔符转换为‘\0’,并返回分隔符之前的字符串首地址,在第二次调用时要传空指针过去,才能返回第二个字符串的首地址,这里为什么要把arr赋给buf这个新数组?因为strtok调用后会改变原字符串。如果字符串中不存在更多的标记,则返回 NULL 指针。
代码改进:

#include <stdio.h>
#include <string.h>int main()
{char arr[] = "zhangsan@qq";char* p = "@.";char buf[20] = { 0 };strcpy(buf, arr);char* ret = NULL;for (ret = strtok(buf, p); ret != NULL;ret = strtok(NULL,p)){printf("%s\n", ret);}return 0;
}

更多推荐

strstr函数和strtok函数

本文发布于:2023-12-05 00:01:03,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1662513.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:函数   strstr   strtok

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!