mrnts1105   2년 전

왜 무한루프에 빠지게 되는지 궁금합니다 ! 9행의 if문에서 .만 입력을 받았을경우에 무한루프에서 탈출하게 되는게 아닌가요..?

seawon0808   2년 전

.만 입력 받았을 때는 탈출을 하는데 그전에 들어온 input을 계속해서 입력받고 있는 것 같아요.

9번째 줄에 printf("%s\n", str); 를 넣어보시면 input의 첫번째 줄만 계속 출력이 되므로 입력에 문제가 있는 것 같아요.

왜 그런지는 저도 잘 모르겠네요.

euphoric_n   2년 전

scanf 패턴 매칭에서 제외하려는 문자를 만나면 그 문자 앞까지만 읽고 나머지는 버퍼에 남깁니다.

예를 들어 a[sdf]g를 입력했을 때, 입력 버퍼에는 a[sdf]g\n가 들어가게 됩니다.

8번 줄의 코드는 str에 a[sdf]g를 저장하고 버퍼에는 \n가 남습니다.

나머지 코드를 처리하고 다시 처음으로 오면 \n을 가지고 있는 버퍼가 기다리고 있기 때문에 scanf는 아무 문자도 str에 저장하지 않고 str은 그대로 유지됩니다.

결국 패턴 매칭으로는 버퍼에 들어간 \n을 처리(소비)하지 못하므로 무한루프에 빠지게 됩니다.

mrnts1105   2년 전

답변 정말 정말 감사합니다 !! 그러면 어떤 입력방법을 택해야될지 잘 모르겠네요 ㅠㅠ

euphoric_n   2년 전

C에서 한 줄을 읽기 위해서는 getline 함수를 사용하시면 됩니다.

댓글을 작성하려면 로그인해야 합니다.