Fgets - функция стандартной библиотеки C, назначение для считывания строки из потока. Прототип функции описан в заголовочном файле stdio.h. Он имеет вид:
char * fgets (char * str, INT Num, FILE * stream). Аргумент:
- char * str - указатель на буфер, в котором считывается строка. Его минимальная длина задается вторым аргументом.
- int num - число, ограничивающее количество символов, которые должны быть считаны.
- FILE * stream - указатель на дескриптор файла, с которого производится считывание. Файл должен быть открытым.
Функция считывает симоволы из потока, пока не встретит символ перевода строки или конца файла, или пока не заполнится буфер. Максимальное число символов, которые может считать fgets, равна N-1. В случае, когда N-1 символ считан, а в потоке еще символы, fgets помещает 0 в N-ый байт буфера str и завершает работу. В случае, когда строка входного потока закончится, а буфер str еще не заполнен, функция помещает в буфер символ конца строки '\ n', а после него - 0.
Рекомендации использования
Функция fgets, наиболее безопасная функция считывания в C. В отличие от функции gets, одним из ее аргументов является ограничитель числа символов, которые нужно считать, поэтому опасность переполнения буфера намного меньше. Функцией fgets рекомендуется считывать не только строки из файлов, но и строки из входного потока stdin. В этом случае вызов функции имеет вид: result = fgets (str, num, stdin);
Функцию fgets рекомендуется использовать и в том случае, когда из файла нужно считать число. Поскольку программист, который пишет программу, не может быть уверен, что в файле, указанном пользователем, всегда будет верна ожидаемая информация, безопасно сначала считать входную строку как строку, проанализировать его, а потом считать нужные числа уже из буфера.