본문 바로가기
Study/C++

[C++] strchr함수 - 문자 검색

by 스테디코디스트 2023. 10. 20.
반응형

<strchr>

1. 라이브러리 : <string.h>

2. 함수 원형

// 검색할 문자열, 존재하는지 확인할 문자(아스키 값)
const char* strchr(const char* str, int c); 
char strchr(char* str, int c);

3. 함수 설명

- 문자열 내에서 해당 문자가 있는지 검색해주는 함수

- 첫번째 문자열 내에 두번째 문자가 존재하는지 검사

- 존재하면 존재하는 곳의 포인터 반환, 존재하지 않으면 널 포인터 반환

 

4. 예시

1) 특정 문자 찾기

// string 이용 -> 주소값 사용
string str = "aAbBcCdD";
char* ptr = strchr(&str[0], 'C'); // 알파벳 C를 찾음

if(ptr != nullptr)
{
	cout << *ptr << endl;
}
else
{
	cout << "2" << endl;
}


// char 배열 사용 -> 이름이 주소를 나타냄 str2 = &str2[0]
char str2[] = "aAbBcCdD";
char* ptr2 = strchr(str2, 'C'); // 알파벳 C를 찾음

if(ptr2 != nullptr)
{
	cout << *ptr2 << endl;
}
else
{
	cout << "2" << endl;
}

2) 특정 문자 찾기 2

const char* ptr = strchr("abcdefg", 'e');

if(ptr != nullptr)
{
	cout << *ptr << " : " << ptr << endl; // 출력 e : efg
}

3) 특정 문자 모두 찾기

#include <string.h>
#include <iostream>

using namespace std;

int main()
{
	char str[] = "ohohhohhoh"
    char* ptr = strchr(str, 'h');
    
    int num = 0;
    
    while(ptr != nullptr)
    {
    	num++;
       	
        cout << num << " : " << *ptr << " : " << ptr;
       	
        ptr = strchr(ptr + 1, 'h'); // ptr + 1 번째 주소 이후로 'h'가 나오는 주소를 찾음
    }
    
    // 출력 값
    // 1 : h : hohhohhoh
    // 2 : h : hhohhoh
    // 3 : h : hohhoh
    // 4 : h : hhoh
    // 5 : h : hoh
    // 6 : h : h

	return 0;
}