[완료][C언어] 대소문자 변환하기에서 띄어쓰기 부분 질문입니다..

mewestside의 이미지

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
 
int main (int argc, char **argv)
{
        int i, j, n, k;
        char input[BUFSIZ];
        char output[BUFSIZ];
 
        scanf("%s", input);
 
        n = strlen(input);
 
        for (i=0; i<n; i++)
        {
                if (input[i] >= 'a' && input[i] <= 'z')
                {
                        output[i] = input[i] - 32;
                }
                else if (input[i] >= 'A' && input[i] <= 'Z')
                {
                        output[i] = input[i] + 32;
                }
                else
                {
                        output[i] = input[i];
                }
        }
 
        output[i] = '\0';
 
        printf("%s", output);
        printf("\n");
 
        return 0;
}

다음과 같이 코딩을 하였습니다.

실행을 해서

apple 이라고 입력하면 APPLE 라고 나옵니다..

apple BANANA 라고 입력하면 APPLE 만 출력이 됩니다..

APPLE banana 라고 띄어쓰기 포함해서 출력되게 하려면 어떻게 해야할까요?

익명 사용자의 이미지

scanf가 그렇게 동작하는거지...
님이 짠 코드가 띄어쓰기를 처리 못하는게 아닙니다.

mewestside의 이미지

scanf 에 대해 정확히 모르고 있었기에 생긴 문제점 이었네요...

originerd의 이미지

fgets(input, BUFSIZ, stdin); 를 해보세요.

"Time you enjoy wasting, was not wasted" - John Lennon

mewestside의 이미지

답변감사합니다..

어떻게 적용시킬까 찾다가보니 scanf 처럼 쓸수 있는 함수였네요..ㅎ

originerd의 이미지

참, scanf("%s", input); 대신 넣으시면 됩니다.

"Time you enjoy wasting, was not wasted" - John Lennon

mewestside의 이미지

감사합니다..