[C언어/C++] 특정 문자열 찾기/검색 &치환 strstr 함수 사용법 & 예제

    개발을 하다보면 특정 문자열에서 원하는 문자열이 포함되어 있는지 확인해야하는 경우가 있습니다. 이 경우 strstr()함수를 사용하면 간편하게 체크할 수 있습니다.

     

    문자열에서 특정 문자열 검색 strstr 함수 사용법

    #include <string.h> //C언어
    #include <cstring> //C++
    
    char* strstr(char* str1, const char* str2);
    

    strstr 함수를 사용하기 위해서는 해당 함수가 포함되어있는 <string.h> 헤더를 포함해야 합니다. C++의 경우 <cstring> 헤더를 포함하시면 됩니다. strstr함수는 찾고자하는 문자열이 있다면 해당 문자열로 시작하는 문자열 포인터를 반환하고 찾고자 하는 문자열이 없다면 NULL값을 반환합니다. 

     

    인자값
    str1 : search 대상 문자열
    str2 : 찾고자 하는 문자열

    리턴값
    해당문자열로 시작하는 문자열의 위치 포인터

     

    문자열 검색 strstr 함수 사용 예제

    #include <stdio.h>
    #include <string.h> //strstr 함수가 선언된 헤더 파일
    #include <cstring> //c++일경우
    int main()
    {
        char str[] = "Hello World Wecome to the World"; //대상 문자열
        char* ptr = strstr(str, "World"); // World로 시작하는 문자열 검색
        printf("주소값 : %p\n", ptr);
        printf("문자열 : %s\n", ptr);
    
        return 0;
    }
    

    strstr함수를 사용하면 대상 문자열에서 찾고자 하는 문자열을 발견하면 해당 위치의 주소값을 반환하고 종료됩니다. 문자열에 찾고자하는 문자열이 여러개가 있어도 하나밖에 찾지 못하죠. 정상적으로 사용되었다고 말하기는 힘들것입니다. 이것을 방지하기 위해서는 먼저 찾은 포인터에 +1을 더하여 계속해서 검색해주어야 합니다. 아래와 같이 말이죠.

     

    #include <stdio.h>
    #include <string.h> //strstr 함수가 선언된 헤더 파일
    #include <cstring> //c++일경우
    int main()
    {
    
        char str[] = "Hello World Wecome to the World My World";
        char* ptr = strstr(str, "World"); // World으로 시작하는 문자열 검색
        int count = 0;
    
        while (ptr != NULL) // 검색된 문자열이 없을 때까지 반복
        {
            printf("%s\n", ptr); // 검색된 문자열 출력
            ptr = strstr(ptr + 1, "World"); // 리턴된 포인터 +1 계속 검색
            count++;
        }
    
        printf("찾은 문자열 %d개", count);
    
        return 0;
    }
    

    strstr함수는 대상문자열에 찾을 문자열이 없다면 NULL값을 반환합니다. NULL값이 나올때까지 리턴된 포인터에 1을 더하여 계속해서 검색하면 찾고자 하는 문자열이 여러개가 있어도 전부 찾을 수 있습니다.

     

    strstr 함수를 활용하여 문자열 치환하기

    #define _CRT_SECURE_NO_WARNINGS
    #include <stdio.h>
    #include <string.h> //strstr 함수가 선언된 헤더 파일
    #include <cstring> //c++일경우
    int main()
    {
        char str[] = "This is a simple string";
        char* ptr = strstr(str, "simple");  // simple이 존재하는 위치를 찾음
    
        if (ptr) {
            strncpy(ptr, "sample", 6);  // sample로 변경
            puts(str);
        }
    
        return 0;
    }
    

    strstr함수를 활용하여 치환할 문자열의 위치를 찾고 strncpy함수를 활용하여 문자열을 바꾸는 방식으로 문자열 치환을 구현할 수 있습니다.

    댓글(0)

    Designed by JB FACTORY