Fayldan ma'lumot o'qiganda yoki yozganda fayl ko'rsatkichi avtomat ravishda o'qilgan yoki yozilgan bayt miqdoricha siljiydi. Fayl ko'rsatkichi ning kelgan joyini aniqlash uchun ftell funksiyasi ishlariladi.
long int ftell ( FILE * stream );
Fayl ko'rsatkichini siljitish uchun fseekfunksiyasi ishlatiladi.
int fseek ( FILE * stream, long int offset, int whence);
Bu funksiya offset da ko'ratilgan bayt miqdoricha siljishni amalga oshiradi. whence o'zgaruvchisi quyidagi qiymatlarni qabul qilishi mumkin:
Agar whence = 1 bo'lsa (SEEK_CUR), offset musbat (o'ngga siljish) yoki manfiy (chapga siljish) bo'lishi mumkin.
Fayl ko'rsatkichini faylning boshiga o'rnatish uchun rewind funksiyasi ishlatiladi.
void rewind ( FILE * stream );
Bu amalni fayl ko'rsatkichini siljitish orqali ham amalga oshirish mumkin.
fseek (f, 0, SEEK_SET);
Agar faylda faqat butun sonlar yozilgan bo'lsa, uning к - elementi ga murojaat quyidagicha bo'ladi.
fseek (f, sizeof(int) * (к - 1), SEEK_SET);
fread (&n, sizeof(int), 1, f);
Fayl oxirini aniqlash uchun feof funksiyasi ishlatiladi.
int feof ( FILE * stream );
feof funksiyasi fayl ko'rsatkichi fayl oxirida bo'lsa, noldan farqli qiymat qaytaradi. Boshqa hollarda nol qaytaradi.
2 - misol. n natural soni berilgan. Elementlari n ta butun sondan iborat bo' Igan faylni hosil qiluvchi va ekranga chiqaruvchi dastur tuzilsin.
#include
#include
using namespace std;
int main() {
int n, k;
FILE *f;
f = fopen("binar", "wb+");
// binar faylni yozish va o'qish uchun ochish
if (f == NULL) {
cout « "Faylni hosil qilishda xato bo'ldi";
return 1; }
cout « "n="; cin » n;
for (int i = 0; i < n; i++) {
cin » k;
fwrite(&k, sizeof(к), 1, f) ; }
// fayl ko'rsatkichini fayl boshiga qo'yish
rewind(f);
while (fread(&k, sizeof(k), 1, f)) {
//fayl boshidan fayl ko'rsatkichi turgan o'ringacha bo'lgan baytlar
int bayt = ftell (f);
cout « к «" ftell (f)=" « bayt « endl; }
fclose (f);
return 0; }
Dostları ilə paylaş: |