stdio.h

fseek

Описание

int fseek( FILE *fp, long pos, int whence )

fseek установява позицията във файла, от която се записва или чете.

Параметри

FILE *fp

Указател на файла върнат от fopen.

long pos

Позиция във файла.

int whence

Определя позицията спрямо която ще бъде направено отместването.

SEEK_SET Спрямо началото на файла
SEEK_CUR Спрямо текущата позиция във файла
SEEK_END Спрямо края на файла

Връщани стойности

0 при успешно изпълнение

-1 при грешка

Примери

от: adviser at cpp-examples dot com   Свали кода във файл
  1. #include <stdio.h>
  2.  
  3. int main ()
  4. {
  5.   FILE * pFile;
  6.   pFile = fopen ( "test.txt" , "w" );
  7.   fputs ( "Това е тест" , pFile );
  8.   fseek ( pFile , 11 , SEEK_SET );
  9.   fputs ( "!!!" , pFile );
  10.   fclose ( pFile );
  11.   return 0;
  12. }
от: adviser at cpp-examples dot com   Свали кода във файл
  1. #include <stdio.h>
  2. int main ()
  3. {
  4.   FILE * pFile;
  5.   pFile = fopen ( "test.txt" , "w" );
  6.   fseek ( pFile , 2000000 , SEEK_END ); //създава 2Mb-тов файла
  7.   fclose ( pFile );
  8.   return 0;
  9. }
от: adviser at cpp-examples dot com   Свали кода във файл
  1. /* Записва буквите от англииската азбука във фаил.
  2. После прочита две от тях.*/
  3.  
  4. #include <stdio.h>
  5.  
  6.  
  7. int main()
  8. {
  9.     int ch;                      
  10.     FILE *fp;
  11.     if ((fp=fopen("alph.txt", "w+"))==NULL)  // Създава файла
  12.     {
  13.         printf("Грешка при отварянето на файла.");
  14.         return 1;
  15.     }
  16.  
  17.     for (ch=65; ch<=90; ch++)
  18.     {
  19.           putc(ch, fp); // Пише буквите във файла
  20.     }                
  21.  
  22.     fseek(fp, 8L, SEEK_SET);           // Прескача на 8-мия символа,                                      
  23.     ch=getc(fp);
  24.     printf("Първия символ е: %c\n",ch);
  25.  
  26.     fseek(fp, 16L, SEEK_SET);         // Прескача на 16-тия символ,
  27.     ch=getc(fp);
  28.     printf("Втория символ е: %c\n",ch );
  29.  
  30.     fclose(fp);
  31.     return 0;
  32. }
от: adviser at cpp-examples dot com   Свали кода във файл
  1. /*Програмата отпечатва съдържанието на файла обърнато.*/
  2. #include <stdio.h>
  3. #include <stdlib.h>
  4.  
  5. int main()
  6. {
  7.    int inChar;
  8.  
  9.    FILE *fp;
  10.    if ((fp = fopen("ALPH.TXT", "r"))==NULL)    
  11.    {
  12.         printf("Грешка при отваряне на файла!");
  13.         exit(1);
  14.    }
  15.  
  16.    fseek(fp, -1L, SEEK_END);// Преместваме се върху последния байт
  17.         
  18.    int ctr = 0;
  19.    while(ctr<26)
  20.    {
  21.         inChar = getc(fp);
  22.         putchar(inChar);
  23.         fseek(fp, -2L, SEEK_CUR);
  24.         ctr++;
  25.    }
  26.  
  27.    fclose(fp);
  28.    return 0;
  29. }
  30.  

Бележки

getc, fgetc, putc, fputc и т.н. са функции които осигуряват последователен достъп до всеки символ от файла. За да се достигне до даден символ трябва да се премине през всички предишни символи. Това неудобство може лесно да бъде избегнато с употребата на fseek.

fseek може да се използва за увеличаване размера на файла. Това може да бъде направено като се посочи позиция след края на файла.

Виж също

fopen - отваря файл
fread - чете от файл
fwrite - пише във файл
getc - прочита символ от файл
putc - пише символ в поток
fgetc - прочита символ от поток
fputc - печата символ