C++ dasturlash tilida fayllar bilan ishlash


Quyi darajadagi kiritish va chiqarish


Download 255.77 Kb.
Pdf ko'rish
bet6/8
Sana05.10.2023
Hajmi255.77 Kb.
#1692541
1   2   3   4   5   6   7   8
Bog'liq
C dasturlash tilida fayllar bilan ishlash (1)

Quyi darajadagi kiritish va chiqarish. Quyi darajadagi kiritish va chiqarish 
funksiyalari operatsion tizim imkoniyatlaridan to‘g‘ridan to‘g‘ri foydalanishga 
imkon beradi. Bu holda buferlash va formatlash bajarilmaydi. Faylni quyi 
darajadagi ochishda fayl bilan fayl (oqim) ko‘rsatkichi emas, deskriptor 
bog‘lanadi. Fayl deskriptori fayl ochilganligi to‘grisidagi ma’lumotni operatsion 
tizim ichki jadvallariga joylashtiruvini belgilovchi butun sondir. Quyi darajadagi 
funksiyalar bilan ishlashda dastur kodiga iostream.h kutubxonasini qo‘shishni 
talab qilmaydi. Ammo ushbu kutubxona fayllar bilan ishlashda foydali bo‘lgan 


ba’zi konstantalar (misol uchun fayl yakuni belgisi EOF) tarifini o‘z ichiga oladi. 
Ushbu konstatalarda foydalanganda iostream.h dasturga qo‘shilishi zarurdir.
Fayllarni ochish va yopish. Fayllarni quyi darajadada ochish uchun open() 
funksiyasidan foydalaniladi:
int fd= open (fayl nomi, bayroqlar, murojat). Bunda 
fd – fayl deskriptorini anglatadi; 
fayl nomi – belgilar massiviga ko‘rsatkichdir; 
bayroqlar – fayl ochish rejimini belgilovchi ifodadir. Ushbu ifoda fcntl.h 
kutubxona faylida saqlanuvchi konstantalardan biri yoki shu kostantalardan 
razryadli ‘|’ amali yordamida hosil qilingan bo‘lishi mumkin. 
Fayllarni ochish va yopish uchun konstantalar quyidagilardan iborat: 
O_APPEND – faylni oxiriga yozuv qo‘shish uchun ochish; 
O_BINARY – faylni bitli (ikkili)binar rejimda ochish; 
O_CREAT – yangi fayl yaratish va ochish; 
O_EXCL – agar O_CREAT bilan birga ko‘rsatilgan bo‘lsa va yaratilmoqchi 
bo‘lgan fayl mavjud bo‘lsa, faylni ochish funksiyasi xatolik bilan tugaydi. Bu 
mavjud faylni kompyuter xotirasidan o‘chib ketmasligini taminlaydi; 
O_RDONLY – faylni faqat o‘qish uchun ochish; 
O_RDWR – faylni o‘qish va yozish uchun ochish; 
O_TEXT – faylni matnli rejimda ochish; 
O_TRUNK – mavjud faylni ochish va bor ma’lumotni o‘chirish. 
Fayllar bilan ishlashda yuqorida keltirilgan buyruqlarlardan biri albatta 
ko‘rsatilgan bo‘lishi shart. 
Ro‘yxatda keltirilgan O_CREAT faqat ochish rejimida, ya’ni yangi fayl 
yaratishda foydalaniladi. 
MS DOS va MS WINDOWS operatsion tizimlarida murojat huquqlari 
parametrlarini berish uchun quyidagi konstantalardan foydalaniladi.: 
S_IWRITE – faylga yozishga ruxsat berish; 
S_IREAD – fayldan o‘qishga ruxsat berish; 
S_ IREAD\ S_WRITE – o‘qish va yozishga ruxsat berish. 


Ko‘rsatilgan konstantalar sys katalogida joylashgan stat.h sarlavhali faylda 
saqlanadi. Bu faylni qo‘shish #include dastur kodi orqali amalga 
oshiriladi. Agar murojaat parametri ko‘rsatilmagan bo‘lsa faqat fayldan o‘qishga 
ruxsat beriladi. UNIX operatsion tizimida murojaat huquqlari 3 xil 
foydalanuvchilar uchun ko‘rsatiladi: 
- fayl egasi; 
- foydalanuvchilar guruhi a’zosi; 
- boshqa foydalanuvchilar. 
Foydalanuvchilar huquqlari quyidagi belgilar orqali ko‘rsatiladi: 
- r – fayldan o‘qish ruxsat berilgan; 
- w – faylga yozish ruxsat berilgan; 
- x – fayllarni bajarish ruxsat berilgan. 
Agar biror murojaat huquqi berilmagan bo‘lsa, u holda ‘_’ belgisi qo‘yiladi. 
Agar fayl egasiga hamma huquqlar, foydalanuvchi guruhi a’zolariga o‘qish va 
bajarish, boshqa foydalanuvchilarga faqat bajarish huquqi berilgan bo‘lsa, 
murojaat qatorini quyidagicha yozish mumkin: rwxr-x-x. Har bir ‘_’ belgi o‘rniga 
0 raqami, aks holda 1 raqami qo‘yilib hosil bo‘lgan sondagi o‘ng tomondan 
boshlab har bir uch raqamini sakkizlik son sifatida yozilsa, murojaat huquqini 
belgilovchi sakkizlik butun son hosil bo‘ladi. Yuqorida hosil qilingan rwxr-x-x 
qatori ikkilik 111101001 nihoyat sakkizlik 0751 son shaklida yozilib, open( ) 
funksiyasida murojaat huquqi parametri sifatida ko‘rsatiladi.
Faylni ochishga quyidagi misollarni keltirish mumkin: 
1. faylni o‘qish uchun ochish: 
fd=open ( “ t.txt “ , O_RONLY) 
2. faylni o‘qish va yozish uchun ochish: 
fd = open(“ t.txt “ , O_RDWR) 
3. faylni yangi ma’lumotlar yozish uchun ochish: 
fd = open(“ new.txt “ ,O_WRONLY_ |O-Creat| O_TRUNK, 0600) 
Sakkizlik konstanta 0600 shaklida berilgan murojaat huquqi parametrining 
belgili ko‘nishi rw bo‘lib, fayl egasiga o‘qish va yozish huquqi, qolgan 


foydalanuvchilarga hech qanday huquq berilmaganligini bildiradi. Faylni ochishda 
kelib chiqadigan xato turini aniqlash uchun errno.h sarlavhali faylda saqlanuvchi 
errno o‘zgaruvchisi xizmat qiladi. Agar bu o‘zgaruvchi qiymati, ushbu sarlavhali 
faylda saqlanuvchi EEXIST konstantasiga teng bo‘lsa ochilayotgan fayl 
mavjudligini bildiradi.
sopen() funksiyasi bitta faylga bir necha dasturlardan murojaat qilish 
imkoniyatini yaratadi. Albatta dasturlar faylga faqat o‘qish rejimida murojaat 
qilishi mumkin. Faylni ochish uchun yana creat() funksiyasi mavjud bo‘lib 
quyidagi open() funksiyasini chaqirishga mos keladi: 
open(fay_ nomi, O_creat |O_TRUNK| O_WRONLY); – bu funksiya yangi fayl 
yaratadi va yozish uchun ochadi. Quyi darajada fayllarni yopish uchun close() 
funksiyasidan 
foydalanish talab etiladi. Ushbu 
funksiyaning 
ko‘rinishi 
quyidagicha: 
int close(fayl_nomi) 
Keltirilgan funksiya muvafaqiyatli bajarilganda 0 qiymat qabul qiladi. Xato 
bo‘lganda 1 qiymat qabul qiladi. 

Download 255.77 Kb.

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




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