오늘 다시 공부시작했습니다...
지옥
질문 제목 :
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;
}
값이 정상적으로 출력되지않습니다..
무슨 문제인지 알수있을까요??
-
깜찏한그1녀
긍까 제생각에는 콘솔화면에 앞력을 하면 버퍼에 잠시 저장되었다가
순서대로 변수a에 입력되었다가 출력되는것 같습니다.
잘 못된게 아님니당 -
슬우
그러면
65
32
32
32
10
이라고 떠요 -
세여닝
그리고 콘솔화면에 A 스페이스 스페이스 스페이스 엔터를 눌러보세요
-
수예
님아 while문 끝에 puts(\\);를 넣어보세요
-
나리
제가 컴파일을 해봤는데 정상적이긴한데 뒤에 10이 붙네요
-
호시
10은 아스키 코드에서 LF (line feed) 라고 줄바꿈 이죠. 버퍼에 님이 치신 엔터키가 남아있기 때문에 문자에 해당하는 아스키 코드 + 엔터키가 출력이 됩니다.
따라서 A 라면 A+enter 이므로 65 와 10 을 붙인 6510 이 출력됩니다... 버퍼 비워주세요 -
꽃
제가 직접 컴파일 해볼 여건이 않되서 직접 해보진 못하겟네요
그런데 그냥 scanf 사용해서 버퍼쪽으로 문제될건 없을거같네요,,,; 어떻게 이상한 값이 나온다는건지 자세히 알려주시면 감사할거같습니다 -
나리
아직 fflush는 잘몰라서 더 공부해야겠네요 ㅠㅠ
-
가시
스캔 하신뒤에 fflush(stdin)을 해보시는건 어떠세요? 원래 stdin에다가 fflush하지 말라고들 하지만 그래도 한번 써보심이?