C 語言中的 strstr() 函式是什麼?


C 庫函式char *strstr(const char *haystack, const char *needle) 用於在字串haystack中查詢子字串needle的第一個出現位置。終止字元'\0'不會被比較。

一個字元陣列被稱為字串。

宣告

陣列的宣告語法如下 −

char stringname [size];

例如:char string[50];長度為 50 個字元的字串

初始化

  • 使用單個字元常量 −
char string[10] = { ‘H’, ‘e’, ‘l’, ‘l’, ‘o’ ,‘\0’}
  • 使用字串常量 −
char string[10] = "Hello":;

訪問 − 有一個控制字串 "%s" 用於訪問字串,直到遇到‘\0’。

strstr() 函式

  • 用於搜尋子字串是否存在於主字串中。

  • 它返回 s2 在 s1 中第一次出現的位置的指標。

語法

strstr() 函式的語法如下 −

strstr(mainsring,substring);

示例

以下程式展示瞭如何使用 strstr() 函式。

 線上示例

#include<stdio.h>
void main(){
   char a[30],b[30];
   char *found;
   printf("Enter a string:
");    gets(a);    printf("Enter the string to be searched for:
");    gets(b);    found=strstr(a,b);    if(found)       printf("%s is found in %s in %d position",a,b,found-a);    else       printf("-1 since the string is not found"); }

輸出

當執行上述程式時,將會產生以下結果 −

Enter a string: how are you
Enter the string to be searched for: you
you is found in 8 position

示例 2

讓我們瞭解有關 strstr() 函式的另一個程式。

下面是使用 strstr 庫函式在一個字串中查詢另一個字串是否作為子字串存在的 C 語言程式。

 線上示例

#include<stdio.h>
#include<string.h>
void main(){
   //Declaring two strings//
   char mainstring[50],substring[50];
   char *exists;
   //Reading strings//
   printf("Enter the main string : 
");    gets(mainstring);    printf("Enter the sub string you would want to check if exists in main string :");    gets(substring);    //Searching for sub string in main string using library function//    exists = strstr(mainstring,substring);    //Conditions//    if(exists){       printf("%s exists in %s ",substring,mainstring);    } else {       printf("'%s' is not present in '%s'",substring,mainstring);    } }

輸出

當執行上述程式時,將會產生以下結果 −

Enter the main string : TutorialsPoint c Programming
Enter the sub string you would want to check if exists in main string :Programming
Programming exists in TutorialsPoint c Programming

更新於:2021 年 3 月 19 日

870 次瀏覽

開啟你的 職業生涯

透過完成課程獲得認證

開始學習
廣告