nostalgia6   4년 전

보통은 반복문에서 break를 만나면 반복문을 종료하고 프로그램이 종료가 되는데

특이하게  if(a==EOF)는 종료가 되지않더군요.

가령 if(a=='x')라면  x를 입력받으면  break때문에 프로그램이 종료되지요.

그런데 이 코드는 while문이 계속 돌아갑니다.  

아직 모르는게 많아서 왜 그런지 잘 모르겠습니다. 

이거 break를 만나도 왜 반복문이 종료가 되지 않는거죠?



ehddml3   4년 전

혹시 파일 실행시키고 일일이 키보드로 입력하시나요? ./a.exe<input.txt 이렇게 하면 실행파일과 같은 폴더 안에 있는 input.txt에 있는 값을 그대로 입력하는데요 저는 이렇게 하니까 위 코드가 잘 돌아가네용. 이렇게 입력하면 끝에 EOF가 들어가구요. 키보드로 계속 입력하는거는 엔터 칠때마다 '\n' 이게 들어가용. '\n' != EOF
캡처.PNG

nostalgia6   4년 전

a.exe<input.txt 

이런식으로 실행을 시킬수도 있군요. 오늘 처음 알았습니다. c언어 공부한지 아직 한달도 안되서 아직 모르는게 많네요.

일단 엔터는 '\n'이지 EOF가 아니라서 break가 먹히지 않는 것이라고 이해하면 되는 것 같네요.

키보드로 계속 입력하면 엔터칠때 '\n'이 입력되서 putchar에서 지금까지 입력한 값이 출력되고 다시 while문 처음으로 돌아가서 반복하는 식인것 같네요. '\n' 이라는건 지금까지 내가 키보드로 입력한것(아마도 stdin에 들어 있겠죠...)을 stdout을 거쳐서 putchar에서 출력시키라는 뜻이고....

제가 이해한것이 맞나요?

조언 감사드립니다. 




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