문자들의 배열 또는 문자의 집합을 문자열(string)이라고 합니다. C 언어에서 문자열은 널 문자('\0')로 끝나는 문자 배열로 표현됩니다.
문자열 선언
문자열은 다음과 같은 형식으로 선언합니다.
char stringname [size];
예를 들어 char a[50];은 최대 길이 50자를 저장할 수 있는 문자열을 의미합니다.
문자열 초기화
문자열을 초기화하는 방법은 크게 두 가지가 있습니다.
- 단일 문자 상수를 이용한 초기화 −
char a[10] = { 'H', 'e', 'l', 'l', 'o', '\0' };- 문자열 상수를 이용한 초기화 −
char a[10] = "Hello";
문자열 접근
문자열을 입출력할 때는 제어 문자열 %s를 사용하며, 널 문자('\0')를 만날 때까지 문자열을 처리합니다.
모음 개수 세기 로직
입력된 문자가 모음(a, e, i, o, u)인지 검사하여 카운트를 증가시킵니다.
if(string[i]=='a'||string[i]=='e'||string[i]=='i'||
string[i]=='o'||string[i]=='u') // 해당 문자가 모음인지 검사
vowel=vowel+1;숫자 개수 세기 로직
입력된 문자가 숫자('0'~'9')인지 검사하여 카운트를 증가시킵니다.
if(string[i]=='0'||string[i]=='1'||string[i]=='2'|| string[i]=='3'||string[i]=='4'||string[i]=='5'|| string[i]=='6'||string[i]=='7'||string[i]=='8'||string[i]=='9') digit=digit+1;
공백 개수 세기 로직
입력된 문자가 공백(' ')인지 검사하여 카운트를 증가시킵니다.
if(string[i]==' ') space=space+1;
위 조건 어디에도 해당하지 않는 나머지 문자는 모두 자음으로 간주하여 카운트합니다.
전체 프로그램
다음은 C 언어의 문자열 개념을 활용하여 모음, 숫자, 공백, 자음의 개수를 세는 프로그램입니다.
#include<stdio.h>
int main(){
char string[50];
int i,vowel=0,digit=0,space=0,consonant=0;
printf("enter any string includes all types of characters:\n");
gets(string);
for(i=0;string[i]!='\0';i++){
if(string[i]=='a'||string[i]=='e'||string[i]=='i'||
string[i]=='o'||string[i]=='u') // 모음 검사
vowel=vowel+1;
else if(string[i]=='0'||string[i]=='1'||string[i]=='2'||
string[i]=='3'||string[i]=='4'||string[i]=='5'||
string[i]=='6'||string[i]=='7'||string[i]=='8'||string[i]=='9')
digit=digit+1;
else if(string[i]==' ')
space=space+1;
else
consonant=consonant+1;
}
printf("vowel=%d\ndigit=%d\nspace=%d\nconsonant=%d\n",vowel,digit,space,consonant);
return 0;
}참고: gets() 함수는 버퍼 오버플로 위험으로 인해 C11 표준에서 제거되었으므로, 실제 개발 환경에서는 안전성이 보장되는 fgets() 함수를 사용하는 것이 좋습니다.
실행 결과
프로그램을 실행하면 다음과 같은 결과를 확인할 수 있습니다.
enter any string includes all types of characters: Tutorials Point 1234 C programming 2020 vowel=9 digit=8 space=5 consonant=17
실행 결과를 보면 입력된 문자열에서 모음 9개, 숫자 8개, 공백 5개, 자음 17개가 정상적으로 계산된 것을 알 수 있습니다.