프로그래밍

 3198, 1/160 회원가입  로그인  
   dodomania
   C언어 대문자->소문자 바꾸는 main 함수인데..

http://www.hackerschool.org/HS_Boards/zboard.php?AllArticle=true&no=2850 [복사]


#include <stdio.h>

int main(void)
{
        char ch=0;

        while(1)
        {
                printf("문자 입력 :");
                
                while(1)
                {
                        ch=getchar();
                        if('A'<=ch && ch<='Z'){break;}
                        else{printf("A~Z까지 중 하나를 입력하세요\n");}
                }

                putchar(ch+32);
                putchar('\n');
        }

        return 0;
}
        
==================================

출력결과 :

문자 입력 :D
d
문자 입력:A~Z까지 중 하나를 입력하세요


==================================

D를 입력했을때 putchar 까지 잘해줬다가 다시 두번째 while 문 안으로 들어갈 때
getchar 가 실행안되고 if문 부터 실행되는 이유가 뭘까요.. if문부터 실행될지라도 아직 ch=D 이기 때문에
printf 가 실행되면 안될텐데.. 으으으으으으으 왜이럴까요 ㅠ

  Hit : 6372     Date : 2011/01/15 08:35



    
dodomania 아핳핳 알아냈습니다. D 를 치고 엔터를 치는데 이 엔터라는 놈이 입력스트림 버퍼안에 있다가 다시 while 문 들어올때 그 엔터놈이 들어와서 if문 안이 실행되는거였군요.. 2011/01/15  
ruka270 main(){
int len;
char str[]="HELLO,GUTA!\0";
len=strlen(str);
while(len--){ str[len]=tolower(str[len]); }
printf("%s\n",str);
}
2011/01/16  
pkrlove007 오우 혼자서도 잘하시네요..ㅋㅋ
fflush(stdin)를 쓰면 될듯
2011/01/18