fgets – чтение строки из указанного потока данных.
Синтаксис:
#include < stdio.h >
int fgets (char *str, int n, FILE *stream);
Аргументы:
str - указатель на массив, в который будет помещена считанная строка.
n – максимально допустимая длинна считываемой строки.
stream – указатель на поток данных.
Возвращаемое значение:
В случае успешного чтения строки, возвращается указатель на массив, в который помещены считанные данные (возвращается аргумент s).
Если достигнут конец файла, а данные не были считаны, то возвращается NULL.
Если при чтении данные произошла ошибка, то возвращается NULL, а в переменную errno записывается код ошибки. При этом состояние массива, в который должна была сохраниться считанная строка, неопределенно.
Описание:
Функция fgets считывает из потока данных строку пока не встретится символ "новая строка" или не закончится файл или пока длина считываемой строки не превысит ограничение аргумента n (считывается не более чем n-1 символов).
После последнего прочитанного символа в массив s заносится признак конца строки (нулевой символ).
Если достигнут конец файла и несчитан не один символ или произошла ошибка, то возвращается NULL. Для того, чтобы отличить конец файла от ошибки используются функции feof и ferror.
Пример:
В примере из заранее созданного файла test.txt располагающегося в одной папке с программой считываются данные с помощью функции fgets, пока не будет достигнут конец файла.
В файл заранее записаны следующие строки:
      Тест чтения.
      Проверка работы функции fgets.
Считанные данные и отчет о работе выводятся на консоль.
#include < stdio.h > //Для printf, fgets, fopen, fclose, feof
int main (void)
{
// Переменная, в которую будет помещен указатель на созданный
// поток данных
FILE *mf;
// Переменная, в которую поочередно будут помещаться считываемые строки
char str[50];
//Указатель, в который будет помещен адрес массива, в который считана
// строка, или NULL если достигнут коней файла или произошла ошибка
char *estr;
// Открытие файла с режимом доступа «только чтение» и привязка к нему
// потока данных
printf (“Открытие файла: ”);
mf = fopen (“test.txt”,”r”);
// Проверка открытия файла
if (mf == NULL) {printf (“ошибка\n”); return -1;}
else printf (“выполнено\n”);
printf (“Считаны строки:\n”);
//Чтение (построчно) данных из файла в бесконечном цикле
while (1)
{
// Чтение одной строки из файла
estr = fgets (str,sizeof(str),mf);
//Проверка на конец файла или ошибку чтения
if (estr == NULL)
{
// Проверяем, что именно произошло: кончился файл
// или это ошибка чтения
if ( feof (mf) != 0)
{
//Если файл закончился, выводим сообщение о завершении
//чтения и выходим из бесконечного цикла
printf (“\nЧтение файла закончено\n”);
break;
}
else
{
//Если при чтении произошла ошибка, выводим сообщение
//об ошибке и выходим из бесконечного цикла
printf (“\nОшибка чтения из файла\n”);
break;
}
}
//Если файл не закончился, и не было ошибки чтения
//выводим считанную строку на экран
printf (“ %s”,str);
}
// Закрываем файл
printf (“Закрытие файла: ”);
if ( fclose (mf) == EOF) printf (“ошибка\n”);
else printf (“выполнено\n”);
return 0;
}
| |
Результат:
Открытие файла: выполнено
Считаны строки:
           Тест чтения.
           Проверка работы функции fgets.
Чтение файла закончено
Закрытие файла: выполнено
|
Смотри так же:
fgetc
fgets
fputc
fputs
getc
getchar
gets
getw
printf
putc
puts
putchar
putw
ungetc
|