Mavzu: Formatli o’qish va yozish funksiyalari


Download 27.34 Kb.
Sana31.03.2023
Hajmi27.34 Kb.
#1314457
Bog'liq
28 MAVZU DASTURLASHDAN


MAVZU:Formatli o’qish va yozish funksiyalari

Reja:


  1. Formatli o’qish va yozish funksiyalari

  2. Formatli o’qish funksiyasi

  3. Formatli yozish funksiyasi

Kompyuterda har xil turdagi fayllar mavjud, bu fayllarning formatlari ham xar hil. Hozirda eng ko‘p ishlatiladigan fayl formatlari quyidagilar: doc, xls, pdf, rar, zip, iso, swf, txt va boshqalar. Bulardan tashqari kompyuter faqat o‘zi tushunadigan fayllar ham bor, ularni ochish va o‘zgartirish tavsiya qilinmaydi, ko‘p hollarda ochishga ruhsat ham bermaydi.


Fayllarni ochishda(xatosiz ochishda) fayl formatlarini bilish juda muhim, shunga qarab ularni to‘g‘ri ochib beradigan dastur tanlanadi.
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
ketmaketligini 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.

FOYDALANILGAN ADABIYOTLAR


1. Б. Страуструп. Язык программирования С++. Специальное издание.-М.ЮОО
«Бином-Пресс», 2006.-1104 с
2. Глушаков C.B., Коваль A.B., Смирнов C.B. Язык программирования С++: Учебный
курс.- Харьков: Фолио; М.: ООО «Издательство АСТ», 2001.-500c.
3. Павловская T.A. С++. Программирование на языке высокого уровня - СПб.:
Питер. 2005.- 461 с.
4. Подбельский B.B. Язык СИ++.- М.; Финансы и статистика- 2003 562c.
5. Павловская T.C. Щупак Ю.С. С/С++. Структурное программирование.
Практикум.-СПб.: Питер,2002-240с
6 . Павловская T.C. Щупак Ю.С. С++. Объектно-ориентированное
программирование. Практикум.-СПб.: Питер,2005-265с
7. Юров B., Хорошенко С. Assembler: Учебный курс- СПб, “Питер”,2000.-672с.
8 . Абрамов C.A., Гнездилова Г.Г., Капустина E.H., Селюн М.И. Задачи по
программированию.-М.: Наука, 1988.-224c.
9. A.A. Абдукодиров, У.М.Мирзаев СИ тилида программалаш асослари. Укув
кулланма, Тошкент, «Университет», 1994.-52 бет.
10.A.A.Xaldjigitov, Sh.F.Madraximov, U.E.Adamboev Informatika va programmalash. O
’quv qo’llanma, O’zMU, 2005 yil, 145 bet.
11.A.A.Xaldjigitov, Sh.F.Madraximov, A.M.Ikromov, S.I.Rasulov Pascal tilida
programmalash bo’yicha masalalar to’plami. O ’quv qo’llanma, O ’zMU, 2005 yil, 94
bet.
Download 27.34 Kb.

Do'stlaringiz bilan baham:




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