|
Oqimlarni ochish va yopish Pdf ko'rish
|
bet | 168/308 | Sana | 30.05.2024 | Hajmi | 7,16 Mb. | | #257687 |
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; }
|
| |