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

C 프로그래밍 기초: 문장에서 반복되는 문자 개수 세기

문제 정의

사용자가 콘솔에 입력한 특정 문자가 문장 안에서 몇 번 반복되는지 세는 프로그램을 작성해 보겠습니다. 이때 strlen() 함수를 활용하여 해당 문자의 반복 횟수를 화면에 출력하는 것이 목표입니다.

해결 방법

문장 속에서 특정 문자의 개수를 세기 위해 사용한 핵심 로직은 다음과 같습니다.

  • 실행 시점에 사용자에게 문장을 입력받습니다.
printf("Enter a sentence\n");
gets(str);
  • 이어서 세고 싶은 문자 하나를 입력받습니다.
printf("Enter a character to check how many times it is repeating\n");
scanf("%c",&c);
  • for문으로 문장을 한 글자씩 순회하며 입력받은 문자와 일치하는지 비교하고, 일치할 때마다 count 변수를 1씩 증가시킵니다.
for(i=0;i<strlen(str);i++){
    if(str[i]==c){
        count++;
    }
}
  • 마지막으로 누적된 개수를 화면에 출력합니다.

예제 코드

다음은 문장에서 특정 문자가 몇 번 반복되는지 세는 전체 C 프로그램입니다.

#include<stdio.h>
#include<string.h>
main(){
    int i,count=0;
    char c,str[100];
    printf("Enter a sentence\n");
    gets(str);
    printf("Enter a character to check how many times it is repeating\n");
    scanf("%c",&c);
    for(i=0;i<strlen(str);i++){
        if(str[i]==c){
            count++;
        }
    }
    printf("Letter %c repeated %d times\n",c,count);
}

실행 결과

위 프로그램을 실행하면 다음과 같은 결과가 출력됩니다. 예시 문장에서 문자 n은 총 4번 나타난 것을 확인할 수 있습니다.

Enter a sentence
Here are the C Programming question and answers
Enter a character to check how many times it is repeating
n
Letter n repeated 4 times

참고: 더 안전한 입력 방식

gets()는 버퍼 오버플로우 위험 때문에 C11 표준에서 제거된 함수입니다. 실제 프로젝트에서는 입력 크기를 제한할 수 있는 fgets()를 사용하는 것이 좋습니다.

fgets(str, sizeof(str), stdin);
str[strcspn(str, "\n")] = '\0'; // 마지막 개행 문자 제거

또한 반환형을 명시하는 int main(void) 형태로 작성하고 마지막에 return 0;을 추가하면 최신 C 컴파일러에서 경고 없이 깔끔하게 컴파일됩니다.