인프런 커뮤니티 질문&답변

저스트두잇하는중님의 프로필 이미지
저스트두잇하는중

작성한 질문수

홍정모의 따라하며 배우는 C언어

6.1 while 반복 루프에서 scanf()의 반환값 사용하기

scanf 무시

작성

·

301

·

수정됨

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

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)
    {
저스트두잇하는중님의 프로필 이미지
저스트두잇하는중

작성한 질문수

질문하기