Программирование на C и C++

Онлайн справочник программиста на C и C++

Работа со строками: fgets() и fputs()

Файловая система ввода/вывода С содержит две функции, которые могут читать или писать стро¬ки в поток - 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() состоит в том, что можно предотвратить перепол¬нение массива ввода. Массив может содержать символ новой строки.