C & C++

[C언어] 문자열 내 특정 문자(열) 등장 횟수 탐색 방법

jimmy_AI 2022. 9. 29. 21:51
반응형

C언어 특정 문자(열) 개수 세기(1글자, 여러 글자 모두 가능)

문자열 s 내에서 부분 문자열 find의 등장 횟수를 찾는 예시 코드는 아래와 같습니다.

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

int main(){
char s[30] = "hello world! hello hello hi"; // 전체 문자열
char *find = "hello"; // 찾고 싶은 문자열 지정

char *ptr = strstr(s, find); // 첫 등장 위치 탐색

int cnt = 0; // 등장 횟수를 셀 변수

while (ptr != NULL) // 더이상 find 문자열이 등장하지 않을 때까지 반복
{
    ptr = strstr(ptr + 1, find); // 다음 등장 위치 탐색
    cnt++;
}

printf("%s는 %d번 등장합니다.\n", find, cnt); // 출력 결과 : hello는 3번 등장합니다.
  }

위의 코드에 대한 주의 사항을 정리하면 다음과 같습니다.

 

1. 찾을 문자열의 다음 위치를 탐색해주는 strstr 사용을 위해 <string.h>를 포함시켜야 합니다.

2. 찾을 문자열을 담을 변수(위 예시의 find)는 char 포인터 자료형으로 선언해야 합니다.

단, 쌍따옴표(" ")로만 감싸준다면 1글자, 여러 글자 문자열 모두 탐색이 가능합니다.