在C/C++中使用strstr()

时间:2020-02-23 14:30:06  来源:igfitidea点击:

在本文中,我们将介绍如何在C/C++中使用strstr()函数。

如果要查找一个字符串是否是另一个字符串的子字符串,则strstr()函数非常有用。
它还为我们提供了第一场比赛的指针!

由于这种方便,strstr()在C语言中经常使用,因为它是C语言标准的一部分。

C/C++中strstr()的基本语法

该函数接受两个输入字符串" search_string"和" target"。
其中我们将在字符串" search_string"中搜索目标模式" target"。

注意:此函数将忽略两个字符串的终端" \ 0"

如果找到,它将返回" char *"指针指向第一个匹配项的第一个字符。

如果" target"不是" search_string"的子字符串,则返回值为" NULL"。

另外,它在 <string.h>头文件中定义,因此请确保首先包含此头文件!

#include <string.h>

char* strstr(const char* search_string, const char* target);

现在,此说明对您来说必须非常清楚。
现在,让我们看一些示例,以准确了解发生了什么。

在C/C++中使用strstr()–一些示例

让我们输入一个简单的字符串" Hello from theitroad",然后搜索" theitroad"。
如果此功能可以正常工作,我们将获得一个指向第一个匹配字符(" J")的指针。

让我们先编写程序。

#include <stdio.h>
#include <string.h>

int main() {
  char* search_string = "Hello from theitroad";
  char* target = "theitroad";

  printf("Search String: %s\n", search_string);
  printf("Target Pattern: %s\n", target);

  char* result = strstr(search_string, target);

  if (result == NULL) {
      printf("Target pattern is not a substring!\n");
  }
  else {
      printf("Target pattern is a substring!\n");
      printf("First character of result = %c\n", *result);
      printf("The complete result string (result) = %s\n", result);
  }

  return 0;
}

输出

Search String: Hello from theitroad
Target Pattern: theitroad
Target pattern is a substring!
First character of result = J
The complete result string (result) = theitroad

确实,我们得到了我们所期望的! " strstr()"发现" theitroad"是" hello from theitroad"的子字符串,并返回指向第一个匹配项(" J")的指针。

从那里,我们可以简单地打印字符串的其余部分,它是原始字符串(" theitroad")的子字符串!

现在,让我们采用另一个字符串,它不是输入的子字符串。

#include <stdio.h>
#include <string.h>

int main() {
  char* search_string = "Hello from theitroad";
  char* target = "Hi theitroad";

  printf("Search String: %s\n", search_string);
  printf("Target Pattern: %s\n", target);

  char* result = strstr(search_string, target);

  if (result == NULL) {
      printf("Target pattern is not a substring!\n");
  }
  else {
      printf("Target pattern is a substring!\n");
      printf("First character of result = %c\n", *result);
      printf("The complete result string (result) = %s\n", result);
  }

  return 0;
}

输出

Search String: Hello from theitroad
Target Pattern: Hi theitroad
Target pattern is not a substring!

由于我们的目标模式不是输入的子字符串,因此result将为'NULL'!