프로그래밍/C

[C언어-응용문제] 문자열에서 특정 문자의 개수 세기

록스타★ 2024. 11. 21. 10:18
반응형

문자열에서 특정 문자의 개수 세기

사용자로부터 문자열과 특정 문자를 입력받아, 해당 문자열에서 입력한 문자가 몇 번 등장하는지 계산하여 출력하는 프로그램을 작성하세요.

 

사용 개념:

문자열 처리 (char 배열)
반복문 (for)
조건문 (if)
표준 입출력 (scanf, printf)


풀이 방법

  1. 문자열 입력 받기
    • fgets를 사용해 문자열을 입력받습니다. 이 함수는 한 줄의 문자열을 안전하게 읽을 수 있어, 초보자들이 사용하기에 적합합니다.
    • 입력된 문자열에 포함된 개행 문자(\n)는 strcspn을 이용해 제거합니다.
  2. 찾을 문자 입력 받기
    • scanf를 사용해 찾을 문자를 입력받습니다. 공백 문자를 무시하도록 %c 앞에 공백을 추가합니다.
  3. 문자열 탐색하기
    • for 반복문을 사용해 문자열의 각 문자를 순회합니다.
    • 문자열의 끝은 널 문자(\0)로 표시되므로, 반복문의 조건에 str[i] != '\0'를 사용합니다.
  4. 일치 여부 확인
    • if 조건문을 이용해 문자열의 각 문자와 찾을 문자가 같은지 비교합니다.
    • 같다면, 문자의 개수를 저장하는 변수 count를 증가시킵니다.
  5. 결과 출력
    • 최종적으로 찾은 문자 개수를 printf를 사용해 출력합니다.

코드 예시

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

int main() {
    char str[100];    // 문자열을 저장할 배열
    char target;      // 찾을 문자
    int count = 0;    // 문자 개수를 세는 변수

    // 사용자로부터 문자열과 문자를 입력받기
    printf("문자열을 입력하세요: ");
    fgets(str, sizeof(str), stdin); // 문자열 입력
    str[strcspn(str, "\n")] = '\0'; // 개행 문자 제거

    printf("찾을 문자를 입력하세요: ");
    scanf(" %c", &target); // 단일 문자 입력

    // 문자열에서 해당 문자의 개수 세기
    for (int i = 0; str[i] != '\0'; i++) {
        if (str[i] == target) { // 입력된 문자와 비교
            count++; // 일치하면 개수 증가
        }
    }

    // 결과 출력
    printf("입력된 문자열에서 '%c' 문자는 %d번 등장합니다.\n", target, count);

    return 0;
}

코드 설명

1. 문자열 입력받기

 

 


int main() {
    char str[100];    // 문자열을 저장할 배열
    char target;      // 찾을 문자
    int count = 0;    // 문자 개수를 세는 변수
fgets 함수는 문자열을 입력받는 함수로, 최대 길이를 설정해 버퍼 오버플로우를 방지합니다.
입력된 문자열에 포함된 개행 문자(\n)는 strcspn 함수로 제거합니다.
strcspn(str, "\n")은 문자열에서 첫 번째 개행 문자의 위치를 반환하며, 이를 사용해 널 문자(\0)로 대체합니다.

 

2. 찾을 문자 입력받기

 

 

 // printf("찾을 문자를 입력하세요: ");
scanf(" %c", &target);
scanf로 단일 문자를 입력받습니다.
" %c"에서 앞의 공백은 입력 버퍼에 남아 있는 개행 문자를 무시하기 위한 것입니다.

 

3. 문자열 탐색

 

  • for 반복문으로 문자열의 끝(\0)까지 순회합니다.
  • if 조건문으로 현재 문자와 찾고자 하는 문자가 같은지 비교합니다.
  • 일치할 경우, count 변수를 1씩 증가시킵니다.

 

for (int i = 0; str[i] != '\0'; i++) {
    if (str[i] == target) {
        count++;
    }
}
for 반복문으로 문자열의 끝(널 문자 \0)까지 순회합니다.
if 조건문으로 현재 문자가 찾고자 하는 문자와 같은지 비교합니다.
일치할 경우, count 변수를 1씩 증가시킵니다.

 

4. 결과 출력

  • 최종적으로 찾은 문자 개수를 출력합니다.
문자열을 입력하세요: programming is fun
찾을 문자를 입력하세요: g
입력된 문자열에서 'g' 문자는 2번 등장합니다.

 

반응형