strstr 함수로 문자열에서 문자열 찾기

  • 5 minutes to read

C 언어 strstr 함수 요약 노트

  • strstr 함수: 문자열에서 특정 문자열을 찾아 그 위치를 반환하는 함수
  • 함수 원형: char* strstr(const char* str1, const char* str2);
    • str1: 검색 대상이 되는 문자열
    • str2: 검색하고자 하는 문자열
    • 반환값: str1 내에서 str2의 첫 번째 출현 위치를 가리키는 포인터. 검색 실패 시 NULL 반환
  • 예제 코드 :
    • str1 문자열에서 str2 문자열을 검색한 후, 검색된 위치부터 끝까지의 문자열을 출력하는 예제

코드: strstr_ppt.c

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

int main(void)
{
    char str1[] = "C Programming";
    char str2[] = "Program";

    char* ptr = strstr(str1, str2);

    if (ptr != NULL)
    {
        printf("%s\n", ptr); // Program
    }
    else
    {
        printf("Not found.\n");
    }

    return 0;
}
  • strstr 함수 활용 예시: 문자열 검색, 문자열 대체, 문자열 삭제 등

strstr 함수로 문자열에서 문자열 찾기

string.h 헤더 파일에 선언되어 있는 문자열 검색(String String)을 의미하는 strstr 함수를 사용하면 문자열에서 특정 문자열을 검색할 수 있습니다. 문자열 검색도 대소문자를 구분합니다.

strstr 함수의 시그니처는 다음과 같습니다.

char *strstr(
   const char *str,
   const char *strSearch
); 
  • strstr(문자열배열명, 찾을문자열);
    • 지정한 문자열 배열에서 특정 문자열이 앞에서부터 처음 나오는 포인터를 반환하거나, 찾을 문자열이 없으면 NULL을 반환합니다.

strstr 함수의 사용 예제를 살펴보겠습니다.

코드: strstr.c

//[?] strstr 함수로 문자열 검색하기
#include <stdio.h>
#include <string.h> // 문자열 관련 함수를 사용하기 위한 헤더 파일 포함

int main(void)
{
    // 문자열 "C Coding!!!"을 포함하는 char 배열 buffer 선언 및 초기화
    char buffer[] = "C Coding!!!";

    // buffer에서 "ing"이라는 문자열을 검색하고, 검색된 위치를 가리키는 포인터 pfind에 저장
    char* pfind = strstr(buffer, "ing");

    // pfind가 가리키는 위치부터 문자열을 출력
    printf("%s\n", pfind); // ing!!!

    return 0;
}
ing!!!

strstr 함수는 첫 번째 인자로 전달된 문자열에서 두 번째 인자로 전달된 문자열을 검색하고, 검색된 위치를 가리키는 포인터를 반환합니다. 검색에 실패하면 NULL을 반환합니다.

"C Coding!!!" 문자열을 담고있는 buffer에서 strstr 함수로 "ing"를 검색하면 해당 문자열이 검색이되므로 해당 문자열의 시작 포인터를 반환해서 pfind 포인터 변수에 담습니다. 그리고 %s 서식 지정자로 출력해보면 "ing!!!" 형태로 포인터 시작 위치 이후로의 모든 문자열을 가지고 옵니다.

문자열 검색할 때 해당 문자열의 시작 위치를 구할 수 있습니다. 다음 예제를 살펴보세요.

코드: strstr_demo.c

// strstr 함수로 문자열에서 문자열 찾기 
#include <string.h>
#include <stdio.h>

int main(void)
{
    char string[] = "C language"; // 원본 문자열 

    char* pfind; // 찾은 문자열 담을 그릇
    int position = 0; // 찾은 문자열의 시작 위치

    // 문자열 검색
    pfind = strstr(string, "age"); // "age" 문자열 찾기 

    if (pfind != NULL) // 찾지 못하면 NULL 반환
    {
        printf("%s\n", pfind); // age
        position = (int)(pfind - string + 1); // 앞에서부터 찾은 문자열의 시작 위치
        printf("%d\n", position); // 8 
    }

    return 0;
}
age
8

"C Language"에서 "age"를 검색하면 ".......age"에서 검색이 됩니다. 그래서 결괏값으로 "age"pfind 변수에 담기고 시작 위치 값은 앞에서부터 계산되어 8이 됩니다.

오픈코딩 동영상 강의 - strstr 함수로 문자열에서 문자열 찾기

퀴즈

  1. strstr 함수의 반환형은 무엇인가요?
  2. 다음 코드의 실행 결과는 무엇인가요?

코드: strstr_quiz.c

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

int main(void)
{
    char str[] = "C Language";
    char* ptr = strstr(str, "lang");
    printf("%s", ptr);
    return 0;
}
  1. strstr 함수는 대소문자를 구분할까요?

정답:

  1. char*
  2. Language
  3. 대소문자를 구분합니다.
VisualAcademy Docs의 모든 콘텐츠, 이미지, 동영상의 저작권은 박용준에게 있습니다. 저작권법에 의해 보호를 받는 저작물이므로 무단 전재와 복제를 금합니다. 사이트의 콘텐츠를 복제하여 블로그, 웹사이트 등에 게시할 수 없습니다. 단, 링크와 SNS 공유, Youtube 동영상 공유는 허용합니다. www.VisualAcademy.com
박용준 강사의 모든 동영상 강의는 데브렉에서 독점으로 제공됩니다. www.devlec.com