• 카테고리

    질문 & 답변
  • 세부 분야

    프로그래밍 언어

  • 해결 여부

    미해결

scanf 무시

23.01.27 02:56 작성 23.01.27 08:18 수정 조회수 245

0

int main()
{
        char t = 0;
	int red;
	printf("enter char : ");
	red = scanf("%c", &t);
	while (red==1)
	{
		printf("OK\n");
		
		printf("enter next char : ");
		red = scanf("%c", &t);
	}
	printf("END\n");
	
	return 0;
}

 

q를 입력했을 때 생각한 결과는

enter char : q

OK

enter next char :

이건데

while문 안에 있는 scanf가 입력을 한번 건너뛰더라고요. q를 한번 입력했더니 결과로

enter char : q

OK

enter next char : OK

enter next char :

이렇게 나왔습니다 왜 입력을 건너뛴건가요??

 

답변 1

답변을 작성해보세요.

0

강민철님의 프로필

강민철

2023.01.27

scanf("%c", &t) 함수는 입력받은 값을 stdin 스트림에서 제거하지 않아서 그렇슨니다.

다음 scanf("%c", &t)를 실행할 때 이전에 입력받은 값이

stdin 스트림에 남아있어 재입력되는 것으로 보입니다.

getchar()로 입력받은 값을 제거해주세요.

Copy codeint main()
{
    char t = 0;
    int red;
    printf("enter char : ");
    red = scanf("%c", &t);
    while (red==1)
    {