fayllar bilan ishlash
C dasturlash tilida fayllar bilan ishlash orqali ma'lumotlarni faylga saqlash, fayldan ma'lumot o'qish va boshqa fayl bilan bog'liq amallar bajariladi. Fayllar bilan ishlash C dasturlash tilida fopen, fclose, fscanf, fprintf kabi funksiyalar yordamida amalga oshiriladi.
Fayl bilan ishlash uchta asosiy qadamni o'z ichiga oladi:
Faylni ochish.
Fayl bilan o'zaro ishlash (o'qish yoki yozish).
Faylni yopish.
1. Faylni ochish (fopen)
fopen funksiyasi
fopen funksiyasi faylni ochadi va unga ma'lum bir rejimda (o'qish, yozish yoki qo'shish) kirishni ta'minlaydi. Faylni ochishdan maqsad — u bilan keyinchalik o'qish yoki yozish amallarini bajarishdir.
FILE * — fayl ko'rsatkichi. Bu fayl bilan ishlashda qo'llaniladi.
filename — ochilayotgan faylning nomi.
mode — fayl qanday ochilishini belgilovchi rejim (o'qish, yozish va boshqalar).
Misol: Faylni ochish va tekshirish
Har bir qatorni tushuntirish:
#include <stdio.h>
— bu fayl C tilidagi asosiy kirish-chiqarish (I/O) funksiyalarini ishlatish uchun zarur bo'lgan kutubxona.FILE *fayl;
— FILE turidagi fayl ko'rsatkichini e'lon qilamiz. Fayl ko'rsatkichi ochilgan faylni boshqarishda yordam beradi.fayl = fopen("matn.txt", "r");
— faylni o'qish rejimida ochamiz. Agar fayl mavjud bo'lmasa yoki ochishda muammo bo'lsa, NULL qaytariladi.if (fayl == NULL)
— agar fayl ochilmagan bo'lsa, NULL qiymati qaytariladi, bu xatolikni bildiradi.printf("Faylni ochib bo'lmadi!\n");
— fayl ochilmasa, xatolik haqida xabar chiqariladi.fclose(fayl);
— fayl ochilgan bo'lsa, uni yopamiz. Har bir ochilgan fayl yopilishi kerak.return 0;
— dastur muvaffaqiyatli tugadi, 0 qiymatini qaytaradi.
2. Faylni yopish (fclose)
fclose funksiyasi
Fayl bilan ishlash tugagandan keyin uni yopish lozim. Fayl ochiq qolsa, tizim resurslari foydalanishda davom etadi, bu esa turli muammolarni keltirib chiqarishi mumkin. Faylni yopish uchun fclose funksiyasidan foydalaniladi.
stream — ochilgan faylni bildiruvchi ko'rsatkich.
Misol: Faylni ochish va yopish
Har bir qatorni tushuntirish:
fclose(fayl);
— fayl bilan ishlash tugagach, fayl yopilishi kerak. Bu qator faylni yopadi.printf("Fayl yopildi!\n");
— fayl yopilgandan keyin, foydalanuvchiga fayl yopilganligini bildiradi.
3. Fayldan o'qish (fscanf)
fscanf funksiyasi
Fayldan ma'lumot o'qish uchun fscanf funksiyasidan foydalaniladi. Bu funksiya scanf funksiyasiga o'xshash, lekin u ma'lumotni fayldan o'qiydi.
stream — ochilgan faylni bildiruvchi ko'rsatkich.
format — o'qilayotgan ma'lumotning formati.
Misol: Fayldan matn o'qish
Har bir qatorni tushuntirish:
char matn[100];
— 100 belgidan iborat matn saqlash uchun massiv e'lon qilinadi.fscanf(fayl, "%s", matn);
— fayldan birinchi so'zni o'qib, matn massiviga yuklaydi.printf("O'qilgan matn: %s\n", matn);
— o'qilgan matn ekranga chiqariladi.
4. Faylga yozish (fprintf)
fprintf funksiyasi
Faylga ma'lumot yozish uchun fprintf funksiyasidan foydalaniladi. Bu funksiya printf ga o'xshash bo'lib, lekin ma'lumotni faylga yozadi.
stream — ochilgan faylni bildiruvchi ko'rsatkich.
format — faylga yoziladigan ma'lumot formati.
Misol: Faylga yozish
Har bir qatorni tushuntirish:
fprintf(fayl, "Bu faylga yozilgan matn.\n");
— bu funksiya faylga "Bu faylga yozilgan matn" qatorini yozadi.fclose(fayl);
— fayl bilan ishlash tugagandan so'ng, fayl yopiladi.printf("Ma'lumot faylga muvaffaqiyatli yozildi!\n");
— foydalanuvchiga ma'lumotning muvaffaqiyatli yozilganligi haqida xabar beriladi.
5. Fayl bilan ishlovchi dasturlarni GCC orqali sinash
C dasturlarini GCC orqali kompilyatsiya qilish va sinab ko'rish mumkin. Buning uchun quyidagi qadamlarni bajaramiz.
Dastur kodini faylga saqlash:
Misol uchun, yuqoridagi faylga yozish dasturini faylga saqlaymiz:
GCC bilan kompilyatsiya qilish:
Terminalda quyidagi buyruqni kiriting:
Bu buyruq fayl_yozish
nomli bajariladigan fayl yaratadi.
Dasturni ishga tushirish:
Kompilyatsiyalangan dasturni ishga tushirish uchun quyidagi buyruqni kiriting:
Faylni tekshirish:
Dasturni ishlatgandan keyin yozilgan faylni ko'rish uchun:
Bu yerda siz faylga yozilgan ma'lumotni ko'rasiz.
Amaliy misolllar bilan tushunrturib beramiz.
Masala 1: Foydalanuvchidan ism kiritish va faylga yozish
Vazifa: Foydalanuvchidan ismni so'rang va uni faylga yozib qo'ying. Faylni yaratish va unga ismni saqlash kerak.
Yechim:
Tushuntirish:
fayl = fopen("ism.txt", "w");
— bu qator faylni yozish rejimida ochadi. Agar fayl mavjud bo'lmasa, u avtomatik ravishda yaratiladi.scanf("%s", ism);
— foydalanuvchidan ismini kiritishni so'rab, uni ism o'zgaruvchisiga saqlaydi.fprintf(fayl, "Foydalanuvchi ismi: %s\n", ism);
— foydalanuvchi ismini faylga yozadi.fclose(fayl);
— faylni yopish uchun foydalaniladi. Fayl bilan ishlash tugaganida uni yopish majburiy.
Natija:
Dastur ishlaganda foydalanuvchidan ism kiritishni so'raydi va kiritilgan ismni faylga saqlaydi. Fayl ochilganda quyidagi natija ko'rinadi:
Masala 2: Fayldan sonlarni o'qish va ularning yig'indisini hisoblash
Vazifa: Faylga 5 ta son yozing, keyin fayldan ularni o'qib, ularning yig'indisini hisoblang.
Yechim:
Tushuntirish:
Faylga yozish:
fopen("sonlar.txt", "w");
— faylni yozish rejimida ochadi.fprintf(fayl, "%d\n", sonlar[i]);
— har bir sonni faylga yozadi.fclose(fayl);
— faylni yopadi.
Fayldan o'qish:
fopen("sonlar.txt", "r");
— faylni o'qish rejimida ochadi.fscanf(fayl, "%d", &son);
— fayldan sonlarni o'qib, son o'zgaruvchisiga yuklaydi.sum += son;
— har bir sonni yig'indiga qo'shadi.
fclose(fayl);
— faylni yopadi.Natija: Fayldagi barcha sonlarning yig'indisini ekranga chiqaradi.
Natija:
Dastur faylga quyidagi sonlarni yozadi:
Fayldan o'qilgach, ularning yig'indisi hisoblanadi va ekranga chiqariladi:
Masala 3: Matndan ma'lumot o'qish va so'zlarni sanash
Vazifa: Fayldan matn o'qing va ushbu matndagi so'zlar sonini aniqlang.
Yechim:
Tushuntirish:
fscanf(fayl, "%s", soz);
— fayldan so'zlarni o'qiydi va soz o'zgaruvchisiga yuklaydi.word_count++;
— har bir o'qilgan so'z uchun so'zlar sanog'i oshiriladi.fclose(fayl);
— faylni yopadi.Natija: Fayldagi barcha so'zlarning sonini ekranga chiqaradi.
Natija:
Agar faylda quyidagi matn bo'lsa:
Dastur ekranga quyidagini chiqaradi:
Masala 4: Fayldagi harflar va bo'sh joylarni sanash
Vazifa: Fayldagi barcha harflar va bo'sh joylar sonini aniqlaydigan dastur yozing.
Yechim:
Tushuntirish:
fgetc(fayl);
— fayldan har bir belgini o'qib beradi.isalpha(belgi)
— bu funksiya belgi harf ekanligini tekshiradi.isspace(belgi)
— bu funksiya belgi bo'sh joy ekanligini tekshiradi.Natija: Fayldagi barcha harflar va bo'sh joylar soni ekranga chiqariladi.
Natija:
Agar faylda quyidagi matn bo'lsa:
Dastur ekranga quyidagini chiqaradi:
Last updated