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

C 언어로 문자열 속 모음만 골라 대소문자 변환하기

C 언어에서 여러 개의 문자(character)가 배열 형태로 연결된 것을 문자열(string)이라고 합니다. 이번 글에서는 문자열의 선언과 초기화 방법을 먼저 짚어본 뒤, 문자열 속 모음(vowel)만 골라 대문자 또는 소문자로 변환하는 C 프로그램을 예제 코드와 함께 단계별로 살펴보겠습니다.

문자열 선언

문자 배열의 기본 선언 형식은 다음과 같습니다.

char stringname [size];

예를 들어 char a[50];이라고 선언하면 최대 50글자를 저장할 수 있는 문자열이 만들어집니다.

문자열 초기화

문자열을 초기화하는 방법은 크게 두 가지가 있습니다.

  • 문자 상수를 하나씩 나열하는 방법
char a[10] = { 'H', 'e', 'l', 'l', 'o', '\0' };
  • 문자열 상수를 그대로 대입하는 방법
char a[10] = "Hello";

문자열의 끝에는 반드시 널 문자('\0')가 붙어야 한다는 점에 유의하세요.

문자열 접근

문자열을 입력·출력할 때는 제어 문자 "%s"를 사용하며, 이는 널 문자('\0')를 만날 때까지 문자열 전체를 한 번에 처리해 줍니다.

모음 변환 로직

문자열을 처음부터 끝까지 한 글자씩 훑으면서 해당 문자가 소문자 모음(a, e, i, o, u)인지 검사하고, 해당되면 toupper() 함수를 호출해 대문자로 바꿔 주는 방식입니다.

for(i=0;string[i]!='\0';i++){
    if(string[i]=='a'||string[i]=='e'||string[i]=='i'||string[i]=='o'||string[i]=='u'){
        string[i]=toupper(string[i]);
    }
}
printf("The result string with converted vowels is : ");
puts(string);

toupper() 함수를 사용하려면 헤더 파일 <ctype.h>를 반드시 포함해야 합니다.

전체 프로그램

다음은 위 로직을 적용해 문자열 속 소문자 모음을 모두 대문자로 변환하는 완성된 C 프로그램입니다.

#include<stdio.h>
#include<ctype.h>
void main(){
    // 각 문자 위치를 읽기 위한 변수와 문자열 선언 //
    int i;
    char string[40];
    // 문자열 입력 //
    printf("Enter the string : ");
    gets(string);
    // 문자열의 각 문자를 순서대로 검사하는 for 루프 //
    for(i=0;string[i]!='\0';i++){
        if(string[i]=='a'||string[i]=='e'||string[i]=='i'||string[i]=='o'||string[i]=='u'){
            string[i]=toupper(string[i]);
        }
    }
    printf("The result string with converted vowels is : ");
    puts(string);
}

참고로 gets()는 입력 길이를 제한할 수 없어 버퍼 오버플로 위험이 있어 현행 C 표준에서는 제외된 함수입니다. 실제 프로젝트에서는 fgets() 사용을 권장합니다.

실행 결과

위 프로그램을 컴파일해 실행하면 다음과 같은 결과를 확인할 수 있습니다.

Run 1:
Enter the string : TutoRialsPoint
The result string with converted vowels is : TUtORIAlsPOInt

Run 2:
Enter the string : c programming
The result string with converted vowels is : c prOgrAmmIng

첫 번째 실행에서는 입력 문자열에 포함된 소문자 모음(u, o, i, a)만 대문자로 바뀌었고, 이미 대문자였던 R, P나 자음은 그대로 유지된 것을 볼 수 있습니다. 두 번째 실행에서도 마찬가지로 'c programming' 속 소문자 모음 o, a, i만 각각 O, A, I로 변환되었습니다.