C언어 문자 5개를 입력받아서 대문자인지 소문자인지 혹은 영문자가 아닌지 판별하는 프로그램 간단한 질문입니다.

조회수 764회

안녕하세요 문자 5개를 입력받아서 대문자인지 소문자인지 혹은 영문자가 아닌지 판별하는 프로그램을 짜는 중인데 일반문일때는 잘 실행이 되는데 for문으로 반복해주려 할땐 else 영문자가 아닙니다가 계속 같이 나오고 5번 실행도 안되는데 영문을 모르겠습니다.

이미지

int main() {

        char c;
        for (int i = 0; i < 5; i++) {
            scanf_s("%c", &c);

            if (c >= 'a' && c <= 'z') {
                printf("소문자입니다\n");

            }
            else if (c >= 'A' && c <= 'Z') {
                printf("대문자입니다.\n");

            }
            else {
                printf("영문자가 아닙니다\n");
            }
        }


    return  0;

1 답변

  • 좋아요

    2

    싫어요
    채택 취소하기

    해결 방법은 scanf_s함수를 사용할 때 "%c"" %c"와 같이 첫칸에 하나의 공백을 추가하고 사용하시면 됩니다.

    왜 이런 일이 발생하는지는 이전엔 답변했던 아래 글 읽어보세요.

    https://hashcode.co.kr/questions/12755/

    • 수정한 코드
    #include <stdio.h>
    
    int main()
    {
        char c;
    
        for (int i = 0; i < 5; i++) {
            scanf_s(" %c", &c, 1);
    
            if (c >= 'a' && c <= 'z')
                printf("소문자입니다\n");
            else if (c >= 'A' && c <= 'Z')
                printf("대문자입니다.\n");
            else
                printf("영문자가 아닙니다\n");
        }
    
        return  0;
    }
    
    • 결과

    이미지

    • (•́ ✖ •̀)
      알 수 없는 사용자
    • 와 진짜 몰랐던 부분이라 너무 감사합니다!!! 진종수 2021.9.28 22:40

답변을 하려면 로그인이 필요합니다.

프로그래머스 커뮤니티는 개발자들을 위한 Q&A 서비스입니다. 로그인해야 답변을 작성하실 수 있습니다.

(ಠ_ಠ)
(ಠ‿ಠ)