질문 제목 :
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;
}
값이 정상적으로 출력되지않습니다..
무슨 문제인지 알수있을까요??
애교 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하지 말라고들 하지만 그래도 한번 써보심이?