Mavzu: Formatli o’qish va yozish funksiyalari
Download 27.34 Kb.
|
28 MAVZU DASTURLASHDAN
MAVZU:Formatli o’qish va yozish funksiyalari Formatli o’qish va yozish funksiyalari Formatli o’qish funksiyasi 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
ma'muriyatiga murojaat qiling