Fayllar. Oqimli kiritish va chiqarish


Oqimlarni ochish va yopish



Download 69,5 Kb.
bet2/7
Sana10.02.2022
Hajmi69,5 Kb.
#440926
1   2   3   4   5   6   7
Bog'liq
C

Oqimlarni ochish va yopish
Oqim ochilishi uchun, oldindan kiritilgan FILE tipidagi struktura bilan boglash 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'ektga ko’rsatkich qaytariladi. Bu ko’rsatkich qo’yidagicha e'lon qilinishi lozim.
FILE *
Misol uchun FILE * fp
Oqim ochish funktsiyasi quyidagi ko’rinishga ega;
=foren(,)
Misol uchun:fp=fopen(“t.tnt”, “r”)
Oqim bilan bog’lik faylni qo’yidagi 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.
“a” - Fayl da'vom ettirish uchun ochiladi.
“wt” - Fayl yozish va keyingi tahrirlash uchun ochiladi. Fayl ihtiyoriy joyidan o’qish yoki yozish mumkin.
“rt”- fayl ihtiyoriy joyidan o’qish yoki yozish mumkin, lekin fayl ohiriga qo’shish mumkin emas.
“at” - Fayl ihtiyoriy joyidan o’qish va yozish uchun ochiladi “wt” rejmdan farqli fayl ohiriga ma'lumot qo’shish mumkin.
Oqimdan o’qilgan qo’yidagi simvollar CR(13)-naryat nomi qaytarish RF(10)-“yangi qator” boshiga o’tish bitta simvolga “\n” (10) / Agar fayl emas ihtiyoriy bulsa, binar rejimda ochiladi. Buning uchun rejimlar- harfi qo’shiladi “wb” yoki “rtb”. Ba'zi matnli rejim t harifi yordamida ko’rsatiladi masalan “yoki”rt”.
Oqim ochilganda quyidagi hatolar kelib chiqishi mumkin:ko’rsatilgan fayl mavjud emas(o’kish rejimida); disk to’la yoki yozishdan himoyalangan va hokazo. Yana shuni aytish kerakki fopen() funktsiyasi bajarilganda dinamik hotira ishlatiladi. Agar hotirada joy qolmagan bo’lsa “not enough ” - hatosi kelib chiqadi.
Ko’rsatilgan hollarda ko’rsatkich ~ NULL qiymatga ega bo’ladi.
Bu hatolar haqidagi ma'lumotlarni ekranga chiqarish uchun perror () funktsiyasi ishlatiladi. Bu funktsiya iostream.h bibliotekasida saqlanuvchi prototipi qo’yidagi ko’rinishga ega.:
Void perror(court char * s);
Diskda ochilgan fayllarni berkitish uchun qo’yidagi funktsiyadan foydalaniladi.
Int fellove().
Fayllar bilan ishlashning bitli rejimi.
Fayl bilan bitli almashish rejimi getc( ) va putc( ) funktsiyalari yordamida tashkil etiladi. Bu funktsiyalarga qo’yidagi shaklda murojat etiladi:
C=getc(fp);
Putc(c,fp);
Bu erda fp-ko’rsatkich
S-int tipidagi o’zgaruvchi
Misol tariqasida klaviaturadan simvol kiritib faylga yozishni ko’ramiz. Matn ohirini ‘#’ belgisi ko’rsatadi. Fayl nomi foydalanuvchidan so’raladi. Agar klavishasi bosilsa faylga CR va LF (qiymatlari 13 va 10) konstantalar yoziladi. Keyinchalik fayldan simvollarni uqishda bu konstantalar satrlarni ajratishga imkon beradi.
#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=f open(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;
Keyingi programma fayldan simvollarni o’qib ekranga chiqaradi.
#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);
f close (fp);
return 0;
}
Satrlar yordamida fayllar bilan bog’lanish.
Matnli fayllar bilan ishlash uchun fget va fputs funktsiyalaridan foydalaniladi. Bu funktsiyalari prototiplari iostream.h faylida qo’yidagi ko’rinishga ega:
Int fputs (const char *s, FILE *stream);
Char *fgets (char * s, int n, FILE * stream);
Fputs funktsiyasi ‘\0’ simvoli bilan chegaralangan satrni stream ko’rsatkichi orqali aniqlangan faylga yozadi. ‘\0’ simvoli faylga yozilmaydi.
Fgets() funktsiyasi stream ko’rsatkichi orqali aniqlangan fayldan (n-1) simvolni o’qiydi va S ko’rsatgan satrga yozib qo’yadi. Funktsiya n-1 simvolni o’qib bo’lsa eki 1-chi qator simvoli ‘\n’ni uchratsa ishini tuhtatadi. Har bir satr ohiriga qo’shimcha \0 belgisi qo’shiladi. Hato bo’lganda yoki fayl ohiriga etganda agar fayldan birorta simvol o’qilmagan bo’lsa NULL qiymat qaytariladi. Qo’yidagi dasturda bir fayldagi matnni ikkinchi faylga yozishni ko’rib chiqamiz. Bu misolda yana bir imkoniyat komanda qatoridan programmaga ma'lumot uzatish imkoniyati ko’rib chiqilgan. Har qanday dastur operatsion sistemada ma'lumotni argc va argv parametrlar qiymati sifatida oladi. Birinchi programmaga uzatilayotgan satrlar sonini ko’rsatadi. Argv[0] bu faylning nomini saklovchi satrga ko’rsatkich massivining qolgan elementlari argv[10]…argv[argc-1] komanda qatorida fayl nomidan so’ng bo’shlik tashlab yozilgan parametrlarga ko’rsatkichlar.
Programmamiz nomi coryfile.exe bo’lsin va bu programma yordamida f1.dat Faylni f2.dat faylga yozmoqchimiz. Komanda qatori qo’yidagi ko’rinishga ega:
Programma matni:
#include
main (int argc, char*argv[])
{ char cc[256];
FILE *f1, *f2;
If (argc!=3)
{ print (“\n Format bazovih programma:”);
print f (“\n copyfile.exe”)
Cout<< (“\n Fayl netosnihh Fayl priemnik”);
return 1;
}
if ((f1=fopen(argv[1],”r”))==NULL)
{perror(argv[1]);
return 1;
}
if ((f2=fopen(argv[2], “w”))==NULL)
{perror(arg[2]);
return 1;
}
while (fgets(cc,256,f1)!=NULL)
fputs(CC,f2);
fclose(f1);
fclose(f2);
return 0;
}
Bu dastur bajarilishi natijasida int.dat fayliga Cout<< funktsiyasi yordamida monitorga qanday chiqsa shunday ko’rinishda ma'lumotlar yozadi. Keyingi misolda fayldan monitorga o’qishni kuramiz:
#include
int main()
{
FILE *fp;
Intn,nn,I;
If((fp=fopen(“int.dat”,”r”))==NULL)
{perror (“int.dat”);
return 1;
}
for(i=1; i<11;i++)
{fCin>>(fp,”%d”,&n) ;
Cout<<(“%d \n”,n);
}
fclose(fp);
return 0;
}



Download 69,5 Kb.

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




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

kiriting | ro'yxatdan o'tish
    Bosh sahifa
юртда тантана
Боғда битган
Бугун юртда
Эшитганлар жилманглар
Эшитмадим деманглар
битган бодомлар
Yangiariq tumani
qitish marakazi
Raqamli texnologiyalar
ilishida muhokamadan
tasdiqqa tavsiya
tavsiya etilgan
iqtisodiyot kafedrasi
steiermarkischen landesregierung
asarlaringizni yuboring
o'zingizning asarlaringizni
Iltimos faqat
faqat o'zingizning
steierm rkischen
landesregierung fachabteilung
rkischen landesregierung
hamshira loyihasi
loyihasi mavsum
faolyatining oqibatlari
asosiy adabiyotlar
fakulteti ahborot
ahborot havfsizligi
havfsizligi kafedrasi
fanidan bo’yicha
fakulteti iqtisodiyot
boshqaruv fakulteti
chiqarishda boshqaruv
ishlab chiqarishda
iqtisodiyot fakultet
multiservis tarmoqlari
fanidan asosiy
Uzbek fanidan
mavzulari potok
asosidagi multiservis
'aliyyil a'ziym
billahil 'aliyyil
illaa billahil
quvvata illaa
falah' deganida
Kompyuter savodxonligi
bo’yicha mustaqil
'alal falah'
Hayya 'alal
'alas soloh
Hayya 'alas
mavsum boyicha


yuklab olish