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

    프로그래밍을 하다보면 특정 문자열에서 찾고자 하는 문자가 몇번 포함되어있는지 체크하고 싶을때가 있습니다. 대상 문자를 검색하고 싶다면 문자를 끝까지 반복문을 돌려 문자가 있는지 일일이 비교하여 확인하는 방법도 있겠지만 그 방법보다는 strchr()함수를 사용하면 편리하게 찾을 수 있습니다.

     

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

    #include <string.h> //C언어
    #include <cstring> //C++
    
    char* strchr(const char*, int character); //C언어
    const char* strchr(const char* str, int character); //C++
    char* strchr (char* str, int character); //C++
    

    strctr 함수를 사용하기 위해서는 해당 함수가 포함되어있는 <string.h> 헤더를 포함해야 합니다. C++의 경우 <cstring> 헤더를 포함하시면 됩니다. strctr 함수는 찾고자하는 문자열이 있다면 해당 문자열로 시작하는 문자열 포인터를 반환하고 찾고자 하는 문자열이 없다면 NULL값을 반환합니다. strchr은 C++의 경우 두개의 함수형태가 오버로딩 되어 있고 C 의 경우 함수 오버로딩을 할 수 없으므로 위 처럼 하나의 형태만 존재합니다.

     

    인자값
    str : search 대상 문자열
    character : 찾고자 하는 문자

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

     

    문자 검색 strchr 함수 사용 예제

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

    strchr함수를 사용하면 대상 문자열에서 찾고자 하는 문자를 발견하면 해당 위치의 주소값을 반환하고 종료됩니다. 문자열에 찾고자하는 문자가 여러개 있어도 가장 먼저 Search되는 문자의 위치 하나만 찾고 함수가 종료되어버립니다. 이렇게 된다면 나머지 문자들은 찾지 못하겠죠. 문자열에 포함되어 있는 문자의 위치를 모두 찾으려면 먼저 찾은 포인터에 +1을 더하여 NULL값이 나올때까지 반복 수행해야합니다. 

     

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

    strchr함수는 Search할 문자열 내부에 찾을 문자가 없으면 NULL값을 반환합니다. 이러한 특성을 활용하여 NULL값이 나올때까지 리턴된 포인터에 1을 더하여 계속해서 검색하면 찾고자 하는 문자가 여러개가 있어도 전부 찾을 수 있습니다.

     

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

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

    strchr로 찾은 문자를 변경하면 문자 치환도 구현할 수 있습니다.

    댓글(0)

    Designed by JB FACTORY