10820 - 문자열 분석 : EOF 입력

모래사우르스
|2024. 11. 25. 18:54

 

 

<코드>

#include <stdio.h>
#include <string.h>
#define _CRT_SECURE_NO_WARNINGS
int main() {
    while (1) {
        int small = 0, big = 0, integer = 0, space = 0;
        char arr[101] = {};
        scanf("%[^\n]s", &arr);
        getchar();
        if (arr[0] == NULL || arr[0]==EOF) ////수정
            return 0;

        int len = strlen(arr);
        for (int i = 0; i < len; i++) {
            if (arr[i] == ' ')
                space++;
            else if (arr[i] <= '9')
                integer++;
            else if (arr[i] <= 'Z')
                big++;
            else if (arr[i] <= 'z')
                small++;
            else {}
        }
        printf("%d %d %d %d\n", small, big, integer, space);
    }
    return 0;
}

 

처음에 조건문에 (문자열==EOF) 이런 형식으로 넣어서 에러. (EOF는 문자형이다.)

EOF 입력 시 프로그램이 종료되는 형태였는데 종료가 안됨.

 

어떻게 수정을 할까.. 하다가 그냥 입력으로 NULL이 들어오지 않기 때문에 이 경우에도 종료된다고 조건을 추가해줬더니 해결됨.