boshqarish funksiyalari - fseek(), ftell() va rewind() funksiyalari fayl ko‘rsatkichini
o‘zgartirish, qiymatini olish imkonini beradi.
ftell() funksiyasining prototipi
long int ftell(FILE *stream);
ko‘rinishida aniqlangan bo‘lib, argumentda ko‘rsatilgan fayl bilan bog‘langan fayl
ko‘rsatkichi qiymatini qaytaradi. Agar xatolik ro‘y bersa funksiya -1L qiymatini
qaytaradi.
int fseek(FILE *stream,
long offset, int from);
prototipiga ega bo‘lgan fseek() funksiyasi stream fayli ko‘rsatkichini from joyiga
nisbatan offset bayt masofaga surishni amalga oshiradi.
Matn rejimidagi oqimlar
uchun offset qiymati 0 yoki ftell() funksiyasi qaytargan qiymat bo‘lishi kerak. from
parametri quyidagi qiymatlarni qabul qilishi mumkin:
SEEK_SET (=0) - fayl boshi;
SEEK_CUR (=1) - fayl ko‘rsatkichining ayni paytdagi qiymati;
SEEK_END (=2) - fayl oxiri.
Funksiya fayl ko‘rsatkichi qiymatini o‘zgartirish muvaffaqiyatli bo‘lsa, 0
qiymatini, aks holda noldan farqli qiymat qaytaradi.
rewind() funksiyasi
void rewind(FILE *stream);
prototipi bilan aniqlangan bo‘lib, fayl ko‘rsatkichini fayl boshlanishiga olib keladi.
Quyida keltirilgan dasturda binar fayl bilan ishlash ko‘rsatilgan.
#include
using namespace std;
#include
#include
struct Shaxs
{
char Familiya[20];
char Ism[15];
char Sharifi[20];};
{
cout<<"Faylda"<
cout<<"-yo'zuvga o'tishda xatolik ro'y berdi???\n";
return 5;
}
fwrite(shaxs2+k,sizeof(Shaxs),1,oqim2);
fseek(oqim2, k*sizeof(Shaxs),SEEK_SET);
fread(&shaxsk,sizeof(Shaxs),1,oqim2);
cout<
cout<<"Familiysi: "<
cout<<"Ismi: "<
cout<<"Sharifi: "<
fclose(oqim2);
delete shaxs1;
delete shaxs2;
return 0;
}
Yuqorida keltirilgan dasturda, oldin «Talaba.dat»
fayli binar fayl sifatida
yozish uchun ochiladi va u oqim1 o‘zgaruvchisi bilan bog‘lanadi. Shaxs haqidagi
ma’lumotni saqlovchi n o‘lchamli dinamik shaxs1 strukturalar massivi oqim1
fayliga
yoziladi, fayl uzunligi chop qilinib fayl yopiladi. Keyin, xuddi shu fayl
oqim2 nomi bilan o‘qish uchun ochiladi va undagi berilganlar shaxs2
strukturalar
massiviga o‘qiladi va ekranga chop qilinadi. Dasturda fayldagi yozuvni o‘zgartirish
(qayta yozish) amalga oshirilgan. O‘zgartirish qilinishi kerak bo‘lgan yozuv tartib
nomeri foydalanuvchi tomonidan kiritiladi (k o‘zgaruvchisi) va shaxs2 strukturalar
massividagi mos o‘rindagi strukturaning Familiya maydoni klaviaturadan kiritilgan
yangi satr bilan o‘zgartiriladi. oqim2 fayl ko‘rsatkichi fayl boshidan k*sizeof(Shaxs)
baytga suriladi va shaxs2 massivning k - strukturasi (shaxs2+k) shu o‘rindan boshlab
faylga yoziladi. Keyin oqim2 fayli ko‘rsatkichi o‘zgartirish kiritilgan yozuv boshiga
qaytariladi va bu yozuv shaxsk strukturasiga o‘qiladi hamda ekranga chop etiladi.