#include <stdio.h>
int main(void)
{
char val1, val2;
printf("첫 번째 문자: ");
scanf("%c", &val1);
printf("두 번째 문자: ");
scanf("%c", &val2);
return 0;
}
이렇게 하고 출력하면
첫번째 문자만 입력되고 걍 출력되어버리는데
어떤게 문제인가요? 독학중인데 물어볼데가 없어서 자꾸 여기다 여쭤봐서 제송합니다
#include <stdio.h>
int main(void)
{
char val1, val2;
printf("첫 번째 문자: ");
scanf("%c", &val1);
printf("두 번째 문자: ");
scanf("%c", &val2);
return 0;
}
이렇게 하고 출력하면
첫번째 문자만 입력되고 걍 출력되어버리는데
어떤게 문제인가요? 독학중인데 물어볼데가 없어서 자꾸 여기다 여쭤봐서 제송합니다
fflush
제가 모르는 다른 함수를 집어넣어야 문자를 두번 칠 수 있는건가요?? 이제 겨우 변수 선언 배워서..
첫번째 문자를 입력할때 개행문자도 같이 들어가게되서 걸리는 버그
이를 이해하려면 버퍼 개념을 알아야하는데 아직 어려우니 그냥 그렇다 하고 넘어가는게 남
아하 감사합니다 제라스님
scanf 함수는 \n 즉, 개행을 통해 입력이 끝났음을 선고받아요. 그럼 위에 작성하신 코드에서보면 첫 scanf시 A를 입력했다고 가정합시다. 그럼 A를 입력하시고는 당연히 엔터를 누르시겠죠? 바로 이 때, 실제로 버퍼에 입력되는값은 A\n 인겁니다. 변수 val1엔 A라는 값만 들어가고, 버퍼에는 개행문자 \n이 남게됩니다. - dc App
아 그냥 역슬래쉬n 하니까 n만 나오네요.. '\n' 이렇게하면 보이련지 - dc App
안보이네요 ㅋㅋ - dc App
무튼 버퍼에 남은 개행문자가 scanf 함수에서 발동되면서 그대로 문자입력은 받지 못한채 가버리는거죠 - dc App
\\n
첫 댓글이 답인데, 너무 과하게 건너뛰어서 못보고 넘어가네 ㅋ