Файловая система ввода/вывода С содержит две функции, которые могут читать или писать стро¬ки в поток - fgets() и fputs(). Они имеют следующие прототипы:
int fputs(const char *str, FILE *fp);
char *fgets(char *str, int длина, FILE *fp);
Функция fputs() во многом подобна puts(), за тем исключением, что она записывает строку в указанный поток. Функция fgets() читает строку из указанного потока, пока не встретится сим¬вол новой строки или не будет прочитано (длина - 1) символов. Если прочитан символ новой строки, то он станет частью строки (в противоположность gets()). В обоих случаях результирую¬щая строка завершается нулевым символом. Функция возвращает str в случае успеха и нулевой указатель - в случае ошибки.
Можно использовать fgets() как альтернативу gets(). Чтобы сделать это, надо просто указать stdin как указатель на файл. Например, следующая про¬грамма читает до 79 символов, полученных из стандартного ввода:
#include <stdio.h>
int main(void)
{
char s[80];
printf("Enter a string: ");
fgets(s, 80, stdin);
printf ("Here is your string: %s", s);
return 0;
}
Преимущество использования fgets() над gets() состоит в том, что можно предотвратить перепол¬нение массива ввода. Массив может содержать символ новой строки.