반응형
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글자, 여러 글자 문자열 모두 탐색이 가능합니다.
'C & C++' 카테고리의 다른 글
[C언어] 동적 할당 원리 및 방법(malloc, calloc, realloc) 정리 (0) | 2022.11.18 |
---|---|
[C언어] 배열, 문자열 슬라이싱 구현 예제 (1) | 2022.09.23 |
[C언어] 배열 내 특정 값 포함 여부 / 원소 위치 인덱스 찾기 구현 (0) | 2022.08.14 |