Из Учебник по программированию GNU C:
Функция
fgets
( "get get string" ) аналогична функции get функция. Эта функция устарела - это означает, что она устарела и настоятельно рекомендуется, чтобы вы его не использовали, потому что это опасно. Это опасно, потому что если входные данные содержат нулевой характер, вы не можете сказать. Не используйтеfgets
, если вы не знаете данные не может содержать нуль. Не используйте его для чтения файлов, отредактированных пользователем. потому что, если пользователь вставляет нулевой символ, вы должны либо правильно обработайте его или распечатайте сообщение об ошибке. Всегда используйтеgetline
илиgetdelim
вместоfgets
, если вы можете.
Я думал, что функция fgets
останавливается, когда она встречает \0
или \n
; почему эта страница руководства предлагает нулевой байт, является "опасным", когда fgets
должен правильно обрабатывать вход? Кроме того, в чем разница между getline
и fgets
и является ли функция fgets
действительно считающейся устаревшей в C99 или будущих стандартах C?