해결된 질문
작성
·
296
·
수정됨
2
안녕하세요.11-4 강의 듣고 궁금한 점이 있어 질문드립니다.
콘솔창에 문자를 입력할 때 eof 혹은 줄바꿈 말고 4글자를 입력하면 프로그램이 종료되는데, 이는 어떤 원리에서 종료되는 걸까요?
답변 1
2
안녕하세요, 답변 도우미 Soobak 입니다.
코드를 보면, small_array
는 크기가 5
인 char
자료형의 배열로 선언되었습니다.fgets()
함수는 지정된 문자 배열 크기만큼의 문자를 입력받습니다.
그러나 종료 문자('\0'
)를 포함해야 하므로 실제로 입력 받을 수 있는 문자의 수는 배열 크기보다 하나 작습니다.
따라서, 만약 "aaaa\n"
(입력의 마지막에 Enter
키를 입력하면서 개행문자가 추가됩니다.) 과 같이 문자 4
개와 개행문자 '\n'
, 총 5
글자를 입력하면,fgets()
함수는 4
글자의 "aaaa"
만 읽어와 종료문자를 추가하여 small_array
에 저장하고, 나머지 개행문자('\n'
)는 버퍼에 남게 됩니다.
이 때, 그 다음 while()
반복문의 조건을 검사하면서 fgets()
함수는 버퍼에 남아 있는 개행문자('\n'
)를 읽어 small_array[0]
에 저장하게 됩니다.
따라서, small_array[0] != '\n'
반복문의 조건을 만족하지 못하여 종료됩니다.