Reja: Fayl ko’rsatkichini boshqarish funksiyalari


Download 17.69 Kb.
Sana30.03.2023
Hajmi17.69 Kb.
#1310351
Bog'liq
30 mavzu dasturlashdan


MAVZU:Fayl ko’rsatkichini boshqarish funksiyalari


REJA:
1. Fayl ko’rsatkichini boshqarish funksiyalari
2. Fseek(), ftell() va rewind() funksiyalari

Fayl ochilganda, u bilan «stdio.h» sarlavha faylida aniqlangan FILE strukturasi


bog‘lanadi. Bu struktura har bir ochilgan fayl uchun joriy yozuv o‘rnini ko‘rsatuvchi
hisoblagichni - fayl ko‘rsatkichini mos qo‘yadi. Odatda fayl ochilganda ko‘rsatkich
qiymati 0 bo‘ladi. Fayl ustida bajarilgan har bir amaldan keyin ko‘rsatkich qiymati
o‘qilgan yoki yozilgan baytlar soniga oshadi. Fayl ko‘rsatkichini 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. Dasturda bosh funksiyadan tashqari ikkita funksiya aniqlangan: int
Fayl_Yaratish() - diskda «Sonlar.dbl» nomli faylni yaratadi. Agar faylni yaratish
muvaffaqiyatli bo‘lsa, funksiya 1 qiymatini, aks holda 0 qiymatini qaytaradi. Faylni
yaratishda klaviaturadan sonlarning satr ko‘rinishi o‘qiladi va songa aylantirilib,

faylga yoziladi. Agar bo‘sh satr kiritilsa, sonlarni kiritish jarayoni to‘xta-tiladi va


fayl yopiladi; int OAdan_Kichiklar_Soni() - diskdagi «Sonlar.dbl» nomli fayli o‘qish
uchun ochiladi va fayl elementlarining s o‘rta arifmetigidan kichik elementlari soni
k topiladi va funksiya natijasi sifatida qaytariladi. Bosh funksiyada faylni yaratish
muvaffaqiyatli kechganligi tekshiriladi va shunga mos xabar beriladi.
C++da fayllar oqimlari bilan ishlash uchun fstream kutubxonasi mavjud. fstream
kutubxonasi fayllarni o‘qib olish uchun javob beradigan ifstream sinfiga, xamda
faylga ma’lumot yozishga imkon beradigan ofstream turlariga (sinfiga) ega.
#include Biron-bir faylni yozish yoki o‘qish uchun ochish uchun, ofstream turdagi
yoki mos xolda ifstream turdagi o‘zgaruvchini yaratish kerak. ifstream inData;
ofstream outData; Bunday o‘zgaruvchini initsiallashda fayl nomi o‘zgaruvchi
nomidan keyin qavs ichida berilgan belgilar massivi ko‘rinishida uzatiladi.
Masalan, C diskida joylashgan “text.txt” faylini ochish kerak. Buning uchun
kodning quyidagi fragmenti qo‘llanadi: ifstream inData (“C:\\text.txt”); ofstream
outData (“C:\\text.txt”); yoki o‘zgaruvchi orqali quyidagicha initsiallash mumkin.
Masala. Haqiqiy sonlar yozilgan f fayli berilgan. f fayldagi elementlarning o‘rta
arifmetigidan kichik bo‘lgan elementlar miqdorini aniqlansin. Masalani yechish
uchun f faylini yaratish va qaytadan uni o‘qish uchun ochish zarur bo‘ladi.
Yaratilgan faylning barcha elementlarining yig‘indisi s o‘zgaruvchisida hosil qilinadi
va u fayl elementlari soniga bo‘linadi. Keyin f fayl ko‘rsatkichi fayl boshiga olib
kelinadi va elementlar qayta o‘qiladi va s qiymatidan kichik elementlar soni - k
sanab boriladi. Faylni yaratish va undagi o‘rta arifmetikdan kichik sonlar miqdorini
aniqlashni alohida funksiya ko‘rinishida aniqlash mumkin.
Dastur matni:

#include


#include .h
#include
int Fayl_Yaratish()
{
FILE * f;
double x;
// f fayli yangidan hosil qilish uchun ochiladi
if ((f=fopen("Sonlar.dbl", "wb+"))==NULL)return 0;
char *satr=new char[10];
int n=1;
do {cout<<"Sonni kiriting(bo'sh satr tugatish): ";
gets(satr);
if(strlen(satr))
{
x=atof(satr);
fwrite(&x,sizeof(double),n,f);
}
}
while(strlen(satr));
// satr bo‘sh bo‘lmasa, // takrorlash fclose(f);
return 1;
}
int OAdan_Kichiklar_Soni() { FILE * f;
double x;

f=fopen("Sonlar.dbl", "rb+");


double s=0; // s - f fayl elementlari yig‘indisi while (!feof(f))
{
if (fread(&x,sizeof(double),1,f)) s+=x;
}
long sonlar_miqdori=ftell(f)/sizeof(double);
s/=sonlar_miqdori;
// s- o‘rta arifmetik
cout<<"Fayldagi sonlar o'rta arifmetiki="<int OA_kichik=OAdan_Kichiklar_Soni();
cout<<"O'rta arifmetikdan kichik sonlar miqdori=";
cout<<<"Faylini ochish imkoni bo'lmadi!!!";
return 0;
}


Fayl deganda, odatda nomlangan, bir xil tuzilishga ega bo‘lgan ѐzuvlardan


tashkil topgan ma’lumotlar to‘plami tushuniladi. Bu
7 Modern Operating Systems, Fourth Edition, Andrew S. Tanenbaum,
Herbert Bos, UK London, pages
ma’lumotlarni boshqarish uchun, mos ravishda fayl tizimlari yaratiladi.
Fayl tizimi, ma’lumotlar mantiqiy strukturasinining va ularga ishlov beri
jaraѐnida bajariladigan amallar bilan ish olib borish imkonini beradi. Aynan
fayl tizimi, ma’lumotlarni disklarda ѐki biror-bir boshqa jamlamada tashkil
etish usulini aniqlaydi.

Download 17.69 Kb.

Do'stlaringiz bilan baham:




Ma'lumotlar bazasi mualliflik huquqi bilan himoyalangan ©fayllar.org 2024
ma'muriyatiga murojaat qiling