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

C 언어로 문자열 내 알파벳, 숫자, 특수 문자 개수 구하기

문자열 분석 로직

문자열에 포함된 알파벳, 숫자, 특수 문자의 개수를 세는 핵심 아이디어는 간단합니다. 문자열을 처음부터 끝까지 한 글자씩 검사하면서 각 문자가 어느 범주에 속하는지 판별하고, 그때마다 해당 카운터를 증가시키면 됩니다.

for(number=0; string[number]!='\0'; number++) { // 문자열 끝(널 문자)까지 반복
    if((string[number]>='a' && string[number]<='z') ||
       (string[number]>='A' && string[number]<='Z')) {
        alphabets++; // 알파벳 카운트
    }
    else if(string[number]>='0' && string[number]<='9') {
        digits++; // 숫자 카운트
    }
    else {
        special++; // 특수 문자 카운트
    }
}

이 로직의 판별 기준은 다음과 같습니다.

  • 알파벳: 문자가 'a'~'z' 또는 'A'~'Z' 범위에 속하면 알파벳으로 계산합니다.
  • 숫자: 문자가 '0'~'9' 범위에 속하면 숫자로 계산합니다.
  • 특수 문자: 위 두 조건에 모두 해당하지 않는 나머지 문자(공백, 기호 등)는 특수 문자로 계산합니다.

전체 예제 프로그램

다음은 사용자로부터 문자열을 입력받아 알파벳, 숫자, 특수 문자의 총 개수를 각각 출력하는 완전한 C 프로그램입니다.

#include<stdio.h>
#include<ctype.h>

void main(){
    // 개수 계산용 변수와 문자열 선언 //
    int number;
    char string[50];
    int alphabets=0;
    int digits=0;
    int special=0;

    // 사용자 입력 받기 //
    printf("Enter the string :");
    gets(string);

    for(number=0; string[number]!='\0'; number++){
        if((string[number]>='a' && string[number]<='z') ||
           (string[number]>='A' && string[number]<='Z')){
            alphabets++;
        }
        else if(string[number]>='0' && string[number]<='9'){
            digits++;
        }
        else{
            special++;
        }
    }

    // 결과 출력 //
    printf("The number of alphabets in the string is : %d\n",alphabets);
    printf("The number of digits in the string is : %d\n",digits);
    printf("The number of special characters in the string is : %d\n",special);
}

실행 결과

예를 들어 "Hello World! 123"이라는 문자열을 입력하면 다음과 같이 각 범주의 개수가 출력됩니다.

Enter the string :Hello World! 123
The number of alphabets in the string is : 10
The number of digits in the string is : 3
The number of special characters in the string is : 4

알파벳 10개(H, e, l, l, o, W, o, r, l, d), 숫자 3개(1, 2, 3), 그리고 공백 3개와 느낌표 1개를 합쳐 특수 문자 4개로 정확히 집계된 것을 확인할 수 있습니다.

추가 팁

ctype.h 헤더에 포함된 표준 함수인 isalpha()isdigit()을 사용하면 조건식을 더 간결하고 가독성 좋게 작성할 수 있습니다. 또한 gets() 함수는 버퍼 오버플로우 보안 취약점 때문에 C11 표준에서 제거되었으므로, 실제 프로젝트에서는 크기를 지정할 수 있는 fgets() 사용을 권장합니다.