Reja: Fayl ko’rsatkichini boshqarish funksiyalari
Download 17.69 Kb.
|
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 #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="< 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
ma'muriyatiga murojaat qiling