当前位置: 代码迷 >> 综合 >> 字符查找函数strstr,strtok,错误信息函数strerror
  详细解决方案

字符查找函数strstr,strtok,错误信息函数strerror

热度:25   发布时间:2023-11-26 06:03:46.0

目录

  • strstr函数
      • 描述
      • 声明
      • 参数
      • 返回值
      • 使用
      • 模拟实现
  • strtok函数
    • 描述
    • 声明
    • 返回值
    • 使用
  • strerror

strstr函数

描述

C 库函数 char *strstr(const char *haystack, const char *needle) 在字符串 haystack 中查找第一次出现字符串 needle 的位置,不包含终止符 ‘\0’。

声明

char *strstr(const char *haystack, const char *needle)

参数

haystack – 要被检索的 C 字符串。
needle – 在 haystack 字符串内要搜索的小字符串。

返回值

该函数返回在 haystack 中第一次出现 needle 字符串的位置,如果未找到则返回 null。

使用

int main()
{
    char *p1 = "abcdefgddddddddrrrr";char *p2 = "ddddd";char* ret = strstr(p1, p2);if (ret == NULL){
    printf("不存在");}else{
    printf("%s\n", ret);}return 0;
}

在这里插入图片描述

模拟实现

#include <stdio.h>
#include <assert.h>
char* my_strstr(char*p1, char*p2)
{
    assert(p1 != NULL);assert(p2 != NULL);char*s1 = p1;char*s2 = p2;char*s3 = p1;while (*s3){
    s1 = s3;s2 = p2;while ((*s1 != '\0') && (s2 != '\0') && (*s1 == *s2)){
    s1++;s2++;}if (*s2 == 0){
    return s3;}s3++;}return NULL;
}
int main()
{
    char *p1 = "abcdefgh";char *p2 = "def";char* ret = my_strstr(p1, p2);if (ret == NULL){
    printf("不存在\n");}else{
    printf("%s\n", ret);}return 0;
}

strtok函数

描述

1.分解字符串为一组字符串。s为要分解的字符串,delim为分隔符字符(如果传入字符串,则传入的字符串中每个字符均为分割符)。首次调用时,s指向要分解的字符串,之后再次调用要把s设成NULL。
2.第一个参数指定一个字符串,它包含了0个或者多个由sep字符串中一个或者多个分隔符分割的标记。
3.strtok函数找到str中的下一个标记,并将其用 \0 结尾,返回一个指向这个标记的指针。(注:strtok函数会改变被操作的字符串,所以在使用strtok函数切分的字符串一般都是临时拷贝的内容并且可修改。)
4.strtok函数的第一个参数不为 NULL ,函数将找到str中第一个标记,strtok函数将保存它在字符串中的位置。
5strtok函数的第一个参数为 NULL ,函数将在同一个字符串中被保存的位置开始,查找下一个标记。
如果字符串中不存在更多的标记,则返回 NULL 指针。

声明

char *strtok(char s[], const char *delim);

返回值

从s开头开始的一个个被分割的串。当s中的字符查找到末尾时,返回NULL。
如果查找不到delim中的字符时,返回当前strtok的字符串的指针。

使用

int main()
{
    char arr[] = "wyp@qq.com";char *p = "@.";char buf[1024] = {
     0 };strcpy(buf, arr);char*ret = NULL;for (ret = strtok(arr, p); ret != NULL; ret = strtok(NULL, p)){
    printf("%s\n", ret);}return 0;
}

在这里插入图片描述

strerror

char * strerror ( int errnum );
strerror 
返回错误码,所对应的错误信息。 
/* strerror example : error list */ 
#include <stdio.h> 
#include <string.h> 
#include <errno.h>//必须包含的头文件 
  相关解决方案