아핫뉴스실시간 인기검색어
아핫뉴스 화산 이미지
아하

생활

생활꿀팁

하얀고슴도치236
하얀고슴도치236

C 언어에서 scanf 를 반복문 등으로 다시 받으면 왜 입력받지 않았는데 받은것으로 처리되나요??

C 언어에서 scanf 를 반복문 등으로 다시 받으면 왜 입력받지 않았는데 받은것으로 처리되나요??

예를 들어서

while(1){scanf(A)

print(A)}

이런식으로 처리할때 처음에는 scanf 로 A를 받고 진행되지만

그 이후부터는 입력하지도 않았는데 공백문자 처리되며 계속 print 만 찍힙니다.

    55글자 더 채워주세요.
    2개의 답변이 있어요!
    • 찬란한여치84
      찬란한여치84

      scanf문제는콘솔창에서 입력한 데이터중 엔터값이 버퍼스트림에 남아 있으면서 생기는 문제 입니다

      예를 들면 숫자와 문자를 입력받아야 할경우

      scanf('%d',&a);

      scanf('%c',&b);

      와 같이 코딩하게 됩니다

      콘솔창에

      10을 입력하고 엔터를 입력하면 10은 a변수에 할당이 되지만

      엔터값은 버퍼에 그대로 남게 되어 다음변수 b에 할당이 됩니다

      이를 해결하기위한 다양한방법 중 하나로 getchar()함수를

      중간에 한줄 넣어 엔터값을 처리해주면 됩니다

    • 안녕하세요. 작성하신 질문은 저도 C언어를 처음 배울 때 똑같은 문제를 겪었습니다.

      컴퓨터는 기본적으로 Buffer라고 하는 일종의 임시 저장소를 갖고 있습니다.

      scanf를 이용해서 지속적으로 글을 입력받기를 원한다면, Buffer를 비워주어야 합니다.

      즉 print(A)를 한 후에, fflush(stdin) 를 추가해서 buffer를 비워주고, 다시 입력받고 해야 합니다.