Computer >> 컴퓨터 >  >> 프로그래밍 >> C 프로그래밍

C 언어에서 문자열의 모음과 자음 개수를 세는 방법

문제 개요

C 언어에서 주어진 문자열에 포함된 모음(vowel)과 자음(consonant)의 개수를 세는 프로그램을 작성하는 방법을 알아보겠습니다. 이 예제는 문자열 처리와 조건문, 반복문의 기본기를 익히는 데 매우 유용한 실습 과제입니다.

해결 로직

핵심 아이디어는 간단합니다. 문자열의 각 문자를 하나씩 검사하면서, 해당 문자가 모음에 해당하는지 확인합니다. 모음 판별 조건은 다음과 같습니다.

if(str[i] == 'A' || str[i] == 'E' || str[i] == 'I' || str[i] == 'O' || str[i] == 'U' || str[i] == 'a' || str[i] == 'e' || str[i] == 'i' || str[i] == 'o' || str[i] == 'u')

이 조건이 참이면 모음 카운터(vowels)를 1 증가시키고, 그렇지 않으면 자음 카운터(consonants)를 1 증가시킵니다. 이 과정을 문자열의 끝을 나타내는 널 문자('\0')를 만날 때까지 반복하면 됩니다.

전체 예제 코드

다음은 문자열에서 모음과 자음의 개수를 세는 C 프로그램입니다.

/* 문자열에서 모음과 자음 개수 세기 */
#include <stdio.h>
int main(){
    char str[100];
    int i = 0, vowels = 0, consonants = 0;
    printf("Enter any String : ");
    gets(str);
    while (str[i] != '\0'){
        if(str[i]=='A'||str[i]=='E'||str[i]=='I'||str[i]=='O'||str[i]=='U'||
           str[i]=='a'||str[i]=='e'||str[i]=='i'||str[i]=='o'||str[i]=='u'){
            vowels++;
        } else {
            consonants++;
        }
        i++; /* 매 반복마다 반드시 인덱스를 증가 */
    }
    printf("vowels in this String = %d\n", vowels);
    printf("consonants in this String = %d", consonants);
    return 0;
}

실행 결과

위 프로그램을 실행하면 다음과 같은 결과가 출력됩니다.

Enter any String: TutoriasPoint
vowels in this String = 6
consonants in this String = 7

참고 사항

  • 인덱스 증가 위치 주의: i++는 if-else 구문 바깥에서 반드시 실행되어야 합니다. 만약 else 블록 안에 넣으면 모음을 만났을 때 인덱스가 증가하지 않아 무한 루프에 빠질 수 있습니다.
  • gets() 함수의 위험성: gets()는 입력 길이를 제한할 수 없어 버퍼 오버플로우 위험이 있으며 C11 표준에서 제거되었습니다. 실제 개발 환경에서는 fgets(str, sizeof(str), stdin)을 사용하는 것이 안전합니다.
  • 공백 처리: 위 코드는 공백 문자도 자음으로 계산합니다. 공백을 제외하고 싶다면 조건문에 str[i] != ' ' 검사를 추가하면 됩니다.