오늘 다시 공부시작했습니다...

질문 제목 :
while문안에서 scanf로 문자받아서 정수로 출력.

while문안에서 scanf로 문자받아서 정수로 출력오류질문 내용 : #include stdio.h
int main(void)
{
char a;

scanf(%c, &a);
printf(%d, a);

return 0;

}
은 정상적으로 되는데,while문만 붙여주면
#include stdio.h
int main(void)
{
char a;

while(1)
{
scanf(%c, &a);
printf(%d, a);
}
return 0;
}
값이 정상적으로 출력되지않습니다..

무슨 문제인지 알수있을까요??

댓글 9

  • 애교 2025.11.29

    긍까 제생각에는 콘솔화면에 앞력을 하면 버퍼에 잠시 저장되었다가
    순서대로 변수a에 입력되었다가 출력되는것 같습니다.
    잘 못된게 아님니당

  • 푸우 2025.11.29

    그러면
    65
    32
    32
    32
    10
    이라고 떠요

  • 아잉누님 2025.11.29

    그리고 콘솔화면에 A 스페이스 스페이스 스페이스 엔터를 눌러보세요

  • 쇼콜라데 2025.11.29

    님아 while문 끝에 puts(\\);를 넣어보세요

  • 은소라 2025.11.29

    제가 컴파일을 해봤는데 정상적이긴한데 뒤에 10이 붙네요

  • Isolation 2025.11.29

    10은 아스키 코드에서 LF (line feed) 라고 줄바꿈 이죠. 버퍼에 님이 치신 엔터키가 남아있기 때문에 문자에 해당하는 아스키 코드 + 엔터키가 출력이 됩니다.
    따라서 A 라면 A+enter 이므로 65 와 10 을 붙인 6510 이 출력됩니다... 버퍼 비워주세요

  • 든해솔 2025.11.29

    제가 직접 컴파일 해볼 여건이 않되서 직접 해보진 못하겟네요
    그런데 그냥 scanf 사용해서 버퍼쪽으로 문제될건 없을거같네요,,,; 어떻게 이상한 값이 나온다는건지 자세히 알려주시면 감사할거같습니다

  • 내꼬야 2025.11.29

    아직 fflush는 잘몰라서 더 공부해야겠네요 ㅠㅠ

  • 내꺼하자 2025.11.29

    스캔 하신뒤에 fflush(stdin)을 해보시는건 어떠세요? 원래 stdin에다가 fflush하지 말라고들 하지만 그래도 한번 써보심이?

C언어 다른 글

목록