Главная    Разработка ПО    функции языка Си

Описание функций языка Си

" F "

fabs,fabsf,fabsl 

fclose 

fcloseall 

fdim,fdimf,fdiml 

fdopen 

fegetround 

feof 

ferror 

fesetround 

fgetc 

fgets 

fileno 

finite,finitef,finitel 

fflush 

floor,floorf,floorl 

fma,fmaf,fmal 

fmax,fmaxf,fmaxl 

fmin,fminf,fminl 

fmod,fmodf,fmodl 

fopen 

fpclassify 

fputc 

fputs 

freopen 

frexp,frexpf,frexpl 

fseek 

fseeko 

ftell 

ftello 

All | _ | A | B | C | D | E | F | G | H | I | J | K | L | M | N | O | P | Q | R | S | T | U | V | W | X | Y | Z

fseek– установка позиции в потоке данных.

Синтаксис:

#include < stdio.h >
int fseek(FILE *stream, long int offset, int whence);

Аргументы:

stream – указатель на управляющую таблицу потока данных.
offset – смещение позиции.
whence – точка отсчета смещения.

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

0 – при успешной установки позиции.

Отличное от нуля значение, если при работе функции произошли ошибки. При этом переменной ernno будет присвоен код ошибки:
         [EINVAL] – неверное значение аргумента whence
         [ESPIPE] – недопустимое значение аргумента offset

Описание:

Функция fseek() устанавливает позицию в потоке данных, заданным аргументом stream. Относительно установленной позиции будет осуществляться чтение и запись данных.

Точка отсчета устанавливаемой позиции определяется аргументом whence, который может принимать значения:
         SEEK_SET – смещение отсчитывается от начала файла
         SEEK_CUR – смещение отсчитывается от текущей позиции
         SEEK_END – смещение отсчитывается от конца файла

Смещение задается аргументом offset, причем положительное значение аргумента означает смещения вправо от указанной аргументом whence позиции, отрицательное – смещение влево.

Для двоичных потоков данных, смещение (offset) – это количество байт.

Для текстовых потоков данных смещение (offset) должно быть равно 0, либо получено с помощью функции ftell(), при этом точка отсчета (whence) должна иметь значение SEEK_SET.

Пример:

В примере считывается строка из начала файла, а затем из позиции, смещенной относительно начала файла на 5 байт. Смещение задается с помощью функции fseek. В файле записана следующая строка: 123456789.


#include < stdio.h >  //fopen, fclose, printf, fseek, fgets

int main (void)
{  
   // Переменная, в которую будет сохранен указатель
   // на управляющую таблицу открываемого потока данных
   FILE *mf;
   //Массив в который будет записана считанная из потока данных строка
   char str[50];

   // Открытие файла
   printf (“Открытие файла: ”);
   mf=fopen (“myfile/test.txt”,”r+”);
   // Проверка открытия файла
   if (mf == NULL) printf (“ошибка\n”);
   else printf (“выполнено\n”);
 
   //Установка текущей позиции
   printf (“    Установка позиции на начало файла: ”);
   if (fseek (mf,0,SEEK_SET)==0)
      printf (“выполнено\n”);
   else
      printf (“ошибка\n”);

   //Чтение строки из файла
   printf (“    Считываем строку: ”);
   if (fgets (str, sizeof (str), mf)==NULL)
      printf (“строка не считана\n”);
   else
      printf (“%s\n”,str);

   //Установка текущей позиции
   printf (“    Установка позиции на пятый байт: ”);
   if (fseek (mf,5,SEEK_SET)==0)
      printf (“выполнено\n”);
   else
      printf (“ошибка\n”);

   //Чтение строки из файла
   printf (“    Считываем строку: ”);
   if (fgets (str, sizeof (str), mf)==NULL)
      printf (“строка не считана\n”);
   else
      printf (“%s\n”,str);

   // Закрытие файла
   printf (“Закрытие файла: ”);
   if ( fclose (mf) == EOF) printf (“ошибка\n”);
   else printf (“выполнено\n”);

   return 0;
} 

Результат:

Вывод на консоль:

Открытие файла: выполнено
Установка позиции на начало файла: выполнено
Считываем строку: 123456789
Установка позиции на пятый байт: выполнено
Считываем строку: 6789
Закрытие файла: выполнено



Смотри так же:

fseek
fgetpos
fseeko
fsetpos
ftell
ftello
rewind


Яндекс.Метрика

Рейтинг@Mail.ru