Ma’ruza 15. Fayildan o’qish yozish funksiyalari. Reja



Download 311,71 Kb.
Pdf ko'rish
bet1/7
Sana20.06.2022
Hajmi311,71 Kb.
#678904
  1   2   3   4   5   6   7
Bog'liq
fayildan o\'qish va yozish fungsialari



Ma’ruza 15. Fayildan o’qish yozish funksiyalari. 
 
Reja: 
1. Fayldan o‘qish-yozish funksiyalari.
2. Fayl ko‘rsatkichini boshqarish funksiyalari.
3. Fayllar oqimlari bilan ishlash.
4. Fayllar oqimlarida o‘qish-yozish funksiyalari.
Tayanch atamalar: 
include, Fayl, Fayl ko‘rsatkichi, cout, cin, Funksiya
Parametr, O‘zgaruvchi, Identifikator, FILE, Ko‘rsatkich, EOF, fstream, ifstream, 
ofstream. 
 
15.1. Fayldan o‘qish-yozish funksiyalari 
Fayl oqimi bilan o‘qish-yozish amalini bajarish uchun fayl oqimini ochish 
zarur. Bu ishni, prototipi
FILE * fopen(const char* filename, const char *mode);
ko‘rinishida aniqlangan fopen() funksiyasi orqali amalga oshiriladi. Funksiya 
filename nomi bilan faylni ochadi, u bilan oqimni bog‘laydi va oqimni 
identifikatsiya qiluvchi ko‘rsatkichni javob tariqasida qaytaradi. Faylni ochish 
muvaffaqiyatsiz bo‘lganligini fopen() funksiyasining NULL qiymatli javobi 
bildiradi.
Parametrlar ro‘yxatidagi ikkinchi - mode parametri faylni ochish rejimini 
aniqlaydi. U qabul qilishi mumkin bo‘lgan qiymatlar quyidagi jadvalda keltirilgan.
Fayl ochish rejimlari 
Qiymati 
Fayl ochilish holati tavsifi 
r
Fayl faqat o‘qish uchun ochiladi
w
Fayl yozish uchun ochiladi. Agar bunday fayl mavjud 
bo‘lsa, u qaytadan yoziladi (yangilanadi).


a
Faylga yozuvni qo‘shish rejimi. Agar fayl mavjud bo‘lsa, 
fayl uning oxiriga yozuvni yozish uchun ochiladi, aks holda 
yangi fayl yaratiladi va yozish rejimida ochiladi.
r+
Mavjud fayl o‘zgartirish (o‘qish va yozish) uchun ochiladi.
w+
Yangi fayl yaratilib, o‘zgartirish (o‘qish va yozish) uchun 
ochiladi. Agar fayl mavjud bo‘lsa, undagi oldingi yozuvlar 
o‘chiriladi va u qayta yozishga tayyorlanadi.
a+
Faylga yozuvni qo‘shish rejimi. Agar fayl mavjud bo‘lsa, 
uning oxiriga (EOF alomatidan keyin) yozuvni yozish 
(o‘qish) uchun ochiladi, aks holda yangi fayl yaratiladi va 
yozish rejimida ochiladi.
Matn fayli ochilayotganligini bildirish uchun fayl ochilish rejimi satriga ‘t’ 
belgisini qo‘shib yozish zarur bo‘ladi. Masalan, matn fayl o‘zgartirish (o‘qish va 
yozish) uchun ochilayotganligini bildirish uchun “rt+” satri yozish kerak bo‘ladi. 
Xuddi shunday binar fayllar ustida ishlash uchun ‘b’ belgisini ishlatish kerak. Misol 
uchun fayl ochilishining “wb+” rejimi binar fayl yangilanishini bildiradi.
Fayl o‘zgartirish (o‘qish-yozish) uchun ochilganda, berilganlarni oqimdan 
o‘qish, hamda oqimga yozish mumkin. Biroq yozish amalidan keyin darhol o‘qib 
bo‘lmaydi, buning uchun o‘qish amalidan oldin fseek() yoki rewind() funksiyalari 
chaqirilishi shart.
Faraz qilaylik «C:\\USER\\TALABA\\iat1kurs.txt» nomli matn faylni o‘qish 
uchun ochish zarur bo‘lsin. Bu talab
FILE *f=fopen(“C:
\\USER\\TALABA\\
iat1kurs.txt”, “r+”); 
ifodasini yozish orqali amalga oshiraladi. Natijada diskda mavjud bo‘lgan fayl 
dasturda f o‘zgaruvchisi nomi bilan aynan bir narsa deb tushuniladi. Boshqacha 
aytganda, dasturda keyinchalik f ustida bajarilgan barcha amallar, diskdagi 
«iat1kurs.txt» fayli ustida ro‘y beradi.


Fayl oqimi bilan ishlash tugagandan keyin u albatta yopilishi kerak. Buning 
uchun fclose() funksiyasidan foydalaniladi. Funksiya prototipi quyidagi ko‘rinishga 
ega:
int fclose(FILE * stream);
fclose() funksiyasi oqim bilan bog‘liq buferlarni tozalaydi (masalan, faylga 
yozish ko‘rsatmalari berilishi natijasida buferda yig‘ilgan berilganlarni diskdagi 
faylga ko‘chiradi) va faylni yopadi. Agar faylni yopish xatolikka olib kelsa, funksiya 
EOF qiymatini, normal holatda 0 qiymatini qaytaradi.
fgetc() funksiyasi prototipi
int fgetc(FILE *stream);
ko‘rinishida aniqlangan bo‘lib, fayl oqimidan belgini o‘qishni amalga oshiradi. Agar 
o‘qish muvafffaqiyatli bo‘lsa, funksiya o‘qilgan belgini int turidagi ishorasiz butun 
songa aylantiradi. Agar fayl oxirini o‘qishga harakat qilinsa yoki xatolik ro‘y bersa, 
funksiya EOF qiymatini qaytaradi.
Ko‘rinib turibdiki, getc() va fgetc() funksiyalari deyarli bir xil ishni bajaradi, 
farqi shundaki, getc() funksiyasi belgini standart oqimdan o‘qiydi. Boshqacha 
aytganda, getc() funksiyasi, fayl oqimi standart qurilma bo‘lgan fgetc() funksiyasi 
bilan aniqlangan makrosdir.
fputs() funksiyasi
int fputc(int c, FILE *stream);
prototipi bilan aniqlangan. fputs() funksiyasi fayl oqimiga argumentda ko‘rsatilgan 
belgini yozadi (chiqaradi) va u amal qilishida puts() funksiyasi bilan bir xil.
Fayl oqimidan satr o‘qish uchun
char * fgets(char * s, int n, FILE *stream)
prototipi bilan fgets() aniqlangan. fgets() funksiyasi fayl oqimidan belgilar ketma-
ketligini s satriga o‘qiydi. Funksiya o‘qish jarayonini oqimdan n-1 belgi o‘qilgandan 
keyin yoki keyingi satrga o‘tish belgisi (‘\n’) uchraganda to‘xtatadi. Oxirgi holda 
‘\n’ belgisi ham s satrga qo‘shiladi. Belgilarni o‘qish tugagandan keyin s satr oxiriga, 
satr tugash alomati ‘\0’ belgisi qo‘shiladi. Agar satrni o‘qish muvaffaqiyatli bo‘lsa, 
funksiya s argument ko‘rsatadigan satrni qaytaradi, aks holda NULL.


Fayl oqimiga satrni fputs() funksiyasi yordamida chiqarish mumkin. Bu 
funksiya prototipi
int fputs (const char *s, FILE *stream);
ko‘rinishida aniqlangan. Satr oxiridagi yangi satrga o‘tish belgisi va terminatorlar 
oqimga chiqarilmaydi. Oqimga chiqarish muvaffaqiyatli bo‘lsa, funksiya nomanfiy 
son qaytaradi, aks holda EOF.
feof() funksiyasi aslida makros bo‘lib, fayl ustida o‘qish-yozish amallari 
bajarilayotganda fayl oxiri belgisi uchragan yoki yo‘qligini bildiradi. Funksiya
int feof(FILE *stream);
prototipiga ega bo‘lib u fayl oxiri belgisi uchrasa, noldan farqli sonni qaytaradi, 
boshqa holatlarda 0 qiymatini qaytaradi.
Quyida keltirilgan misolda faylga yozish va o‘qishga amallari ko‘rsatilgan.
#include
using namespace std;
#include
int main()
{
char s;
FILE *in,*out;
if((in=fopen("D:\\USER\\TALABA.TXT","rt"))==NULL)
{
cout<<"Talaba.txt faylini ochilmadi!!\n";
return 1;
}
if((out=fopen("D:\\USER\\TALABA.DBL","wt+"))==NULL)
{
cout<<"Talaba.dbl faylini ochilmadi!!\n";
return 1;
}
while (!feof(in))


{
char c=fgetc(in);
cout<fputc(c,out);
}
fclose(in);
fclose(out);
return 0;
}
Dasturda «talaba.txt» fayli matn fayli sifatida o‘qish uchun ochilgan va u in 
o‘zgaruvchisi bilan bog‘langan. Xuddi shunday, «talaba.dbl» matn fayli yozish 
uchun ochilgan va out bilan bog‘langan. Agar fayllarni ochish muvaffaqiyatsiz 
bo‘lsa, mos xabar beriladi va dastur o‘z ishini tugatadi. Keyinchalik, toki in fayli 
oxiriga etmaguncha, undan belgilar o‘qiladi va ekranga, hamda out fayliga 
chiqariladi. Dastur oxirida ikkita fayl ham yopiladi.

Download 311,71 Kb.

Do'stlaringiz bilan baham:
  1   2   3   4   5   6   7




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

kiriting | ro'yxatdan o'tish
    Bosh sahifa
юртда тантана
Боғда битган
Бугун юртда
Эшитганлар жилманглар
Эшитмадим деманглар
битган бодомлар
Yangiariq tumani
qitish marakazi
Raqamli texnologiyalar
ilishida muhokamadan
tasdiqqa tavsiya
tavsiya etilgan
iqtisodiyot kafedrasi
steiermarkischen landesregierung
asarlaringizni yuboring
o'zingizning asarlaringizni
Iltimos faqat
faqat o'zingizning
steierm rkischen
landesregierung fachabteilung
rkischen landesregierung
hamshira loyihasi
loyihasi mavsum
faolyatining oqibatlari
asosiy adabiyotlar
fakulteti ahborot
ahborot havfsizligi
havfsizligi kafedrasi
fanidan bo’yicha
fakulteti iqtisodiyot
boshqaruv fakulteti
chiqarishda boshqaruv
ishlab chiqarishda
iqtisodiyot fakultet
multiservis tarmoqlari
fanidan asosiy
Uzbek fanidan
mavzulari potok
asosidagi multiservis
'aliyyil a'ziym
billahil 'aliyyil
illaa billahil
quvvata illaa
falah' deganida
Kompyuter savodxonligi
bo’yicha mustaqil
'alal falah'
Hayya 'alal
'alas soloh
Hayya 'alas
mavsum boyicha


yuklab olish