Oqimlarni ochish va yopish




Download 7,16 Mb.
Pdf ko'rish
bet168/308
Sana30.05.2024
Hajmi7,16 Mb.
#257687
1   ...   164   165   166   167   168   169   170   171   ...   308
Bog'liq
Информатика

Oqimlarni ochish va yopish. 
Oqim ochilishi uchun, oldindan kiritilgan 
FILE tipidagi struktura bilan bog`lash lozimdir. FILE strukturasi ta`rifi 
iostream.h bibleotekasida joylashgan. Bu strukturada buferga ko`rsatkich, 
o`qilayotgan pozitsiyaga ko`rsatkich va boshqa ma`lumotlar saqlanadi. Oqim 
ochilganda dasturda oqimga ko`rsatkich ya`ni FILE strukturali tipdagi ob`yektga 
ko`rsatkich qaytariladi. Bu ko`rsatkich quyidagicha e`lon qilinishi lozim. Masalan,
FILE * fp 
FILE *  
Oqim ochish funksiyasi quyidagi ko`rinishga ega; 
=fopen(,
Masalan, fp=fopen(―t.tnt‖, ―r‖)
Oqim bilan bog`liq faylni quyidagi rejimlarda ochish mumkin: 
[w]-
Yangi fayl o`qish uchun ochiladi. Agar fayl mavjud bo`lmasa,
yangidan yaratiladi. 
[r]
- Mavjud fayl faqat o`qish uchun ochiladi. 


277 
 [a]
- Fayl davom ettirish uchun ochiladi. 
[wt]
- Fayl yozish va keyingi tahrirlash uchun ochiladi. Faylni ixtiyoriy 
joyidan o`qish yoki yozish mumkin. 
[rt]-
fayl ixtiyoriy joyidan o`qish yoki yozish mumkin, lekin fayl oxiriga 
qo`shish mumkin emas. 
[at]
- Fayl ixtiyoriy joyidan o`qish va yozish uchun ochiladi ―wt‖
rejimdan farqli fayl oxiriga ma`lumot qo`shish mumkin. 
Oqimdan o`qilgan quyidagi simvollar: 
CR(13)-naryat nomi qaytarish 
RF(10)-―yangi qator‖ boshiga o`tish bitta simvolga ―\n‖ (10)
Agar fayl ixtiyoriy bo`lsa, binar rejimda ochiladi. Buning uchun rejimlar 
harfi qo`shiladi ―wb‖ yoki ―rtb‖. Ba`zi matnli rejim t harfi yordamida 
ko`rsatiladi masalan, ‖rt‖. 
Oqim ochilganda quyidagi xatolar kelib chiqishi mumkin: ko`rsatilgan fayl 
mavjud emas(o`qish rejimida); disk to`la yoki yozishdan himoyalangan va hokazo. 
Yana shuni aytish kerakki fopen() funksiyasi bajarilganda dinamik xotira
ishlatiladi. Agar xotirada joy qolmagan bo`lsa ―not enough ‖ - xatosi kelib
chiqadi.Ko`rsatilgan hollarda ko`rsatkich ~ NULL qiymatga ega bo`ladi. Bu 
xatolar haqidagi ma`lumotlarni ekranga chiqarish uchun perror () funksiyasi 
ishlatiladi. Bu funksiya iostream.h kutubxonasida saqlanuvchi prototipi quyidagi 
ko`rinishga ega.: 
void perror(court char * s); 
Diskda ochilgan fayllarni berkitish uchun quyidagi funksiyadan
foydalaniladi.
Int fellove(). 
Fayllar bilan ishlashning bitli rejimi. Fayl bilan bitli almashish rejimi getc( ) 
va putc() funksiyalari yordamida tashkil etiladi. Bu funksiyalarga quyidagi shaklda 
murojaat etiladi: 
C=getc(fp); 


278 
Putc(c,fp); 
Bu yerda fp-ko`rsatkich, S-int tipidagi o`zgaruvchi. Masalan, klaviaturadan 
simvol kiritib faylga yozishni ko`ramiz. Matn oxirini `#` belgisi ko`rsatadi. Fayl 
nomi foydalanuvchidan so`raladi. Agar klavishasi bosilsa, faylga CR va 
LF (qiymatlari 13 va 10) o`zgarmaslar yoziladi. Keyinchalik fayldan simvollarni 
o`qishda bu o`zgarmaslar satrlarni ajratishga imkon beradi. 
107-listing. Output: 
#include  
#include  
int main() { FILE *fp;
char c; 
const char CR='\015'; 
const char LF='\012'; 
char f_name[20]; 
puts("fayl nomini kiriting:\n"); 
gets(f_name); 
if((fp=fopen(f_name,"w")) ==NULL) 
{ perror(f_name); 
return 1; } 
while ((c=getchar())!='#') { 
if (c=='\n') 
{ putc(CR,fp); 
putc(LF,fp); } 
else putc (c,fp); } 
fclose (fp); 
return 0; } 
108-listing. fayldan simvollarni o`qib ekranga chiqaradi Output: 


279 
#include  
#include  
int main() 
{ FILE *fp; 
char c; 
char f_name [20]; 
puts(“fayl nomini kiriting:\n”); 
if((fp=f open (f name, “r”)) ==NULL) 
{ perror(f name); 
return 1; } 
while ((c=getc(fp))!=eof) 
putchar(c); 
fclose (fp); 
return 0; } 

Download 7,16 Mb.
1   ...   164   165   166   167   168   169   170   171   ...   308




Download 7,16 Mb.
Pdf ko'rish