Функция fread

Прототип функции fread:

size_t fread( void * ptrvoid, size_t size, size_t count, FILE * filestream );

Заголовочный файл

Название Язык
stdio.h С
cstdio С++

Описание

Функция fread считывает массив размером — count элементов, каждый из которых имеет размер size байт, из потока, и сохраняет его в блоке памяти, на который указывает ptrvoid.
Индикатор положения потока увеличивается на общее число записанных байтов.
Общее количество успешно считанных байт (count*).

Параметры:

  • ptrvoid
    Указатель на блок памяти, размер которого должен быть минимум  (size*count) байт.
  • size
    Размер в байтах каждого считываемого элемента.
  • count
    Количество элементов, каждый из которых имеет размер size байт.
  • filestream
    Указатель на объект типа FILE, который связан с потоком ввода.

Возвращаемое значение

Возвращается объект типа size_t, который содержит общее количество, успешно считанных, элементов.
Если возвращаемое значение отличается от количества элементов, значит произошла ошибка или  был достигнут конец файла.
Вы можете использовать функции ferror или feof для определения проблемы — произошла ошибка или был достигнут конец файла.

Пример: исходный код программы

//пример использования функции fread

#include <cstdio>
#include <iostream>

#include <cstdlib>

int main()
{
  FILE * ptrFile = fopen( "file.txt" , "rb" );

  if (ptrFile == NULL)
  {
      fputs("Ошибка файла", stderr);
      exit(1);
  }

  // определяем размер файла
  fseek(ptrFile , 0 , SEEK_END);                          // устанавливаем позицию в конец файла
  long lSize = ftell(ptrFile);                            // получаем размер в байтах
  rewind (ptrFile);                                       // устанавливаем указатель в конец файла

  char * buffer = (char*) malloc(sizeof(char) * lSize); // выделить память для хранения содержимого файла
  if (buffer == NULL)
  {
      fputs("Ошибка памяти", stderr);
      exit(2);
  }

  size_t result = fread(buffer, 1, lSize, ptrFile);       // считываем файл в буфер
  if (result != lSize)
  {
      fputs("Ошибка чтения", stderr);
      exit (3);
  }

  //содержимое файла теперь находится в буфере
  puts(buffer);

  // завершение работы
  fclose (ptrFile);
  free (buffer);
  return 0;
}

Пример работы программы

Этот код считывает содержимое файла file.txt в динамически выделенный буфер, который может быть использован для различных манипуляций с содержимым файла.

CppStudio.com
Lord of the rings (LOTR)
Автор: Marienko L.
Дата: 15.09.2012
Поделиться:

Оставить комментарий

Вы должны войти, чтобы оставить комментарий.