http://en.cppreference.com/w/c...
"Parsing stops if end-of-file occurs or a newline character is found, in which case str
will contain that newline character."
1152번 - 단어의 개수
http://en.cppreference.com/w/c...
"Parsing stops if end-of-file occurs or a newline character is found, in which case str
will contain that newline character."
컴퓨터가 사용자를 위해 널 문자용으로 1바이트를 따로 잡아줄 이유는 전혀 없습니다. 애초에 '문자열'의 정의는 연속된 공간에 char형이 연속으로 존재하고 널 문자로 끝나는 형태일 뿐이지, 널 문자를 특별취급해서 전혀 다른 메모리에 보관한다거나 하지 않습니다.
마찬가지로 크기가 1인 char형 배열에는 빈 문자열 외에는 문자열을 담을 수 없습니다. 이는 %c로 문자 한 개를 입력받는 거랑은 다릅니다. %c나 getchar를 이용해서 받는 것은 "문자열"이 아니라 하나의 "문자"로, 한 글자만을 저장하는 것이기 때문에 끝을 표기하는 별도의 장치가 없습니다.
참고로, fgets에 대한 레퍼런스를 찾아보면 처음부터 fgets는 널 문자를 위해 최대 주어진 길이 -1개의 문자까지만을 저장합니다. 여기에 개행 문자까지 받아들이려면, 1000002바이트는 필요하다는 뜻입니다.
댓글을 작성하려면 로그인해야 합니다.
quf9484 6년 전
9번째줄에 len이 원래 길이보다 +1 돼서 나오는데 fgets로 받아서 그런건가요?
아니면 strlen이 원래 그런건가요??