Со страницы руководства gets
/ fgets
:
The fgets() function reads at most one less than the number of characters
specified by n from the given stream and stores them in the string s.
Reading stops when a newline character is found, at end-of-file or error.
The newline, if any, is retained. If any characters are read and there
is no error, a `\0' character is appended to end the string.
The gets() function is equivalent to fgets() with an infinite n and a
stream of stdin, except that the newline character (if any) is not stored
in the string. It is the caller's responsibility to ensure that the
input line, if any, is sufficiently short to fit in the string.
fgets
сохраняет символ новой строки, который является символом номер 5, а gets
- нет.Кроме того, всегда используйте fgets
, поскольку при использовании gets
.
невозможно предотвратить переполнение буфера.