logo

C++ tilida Fayllar bilan ishlash

Загружено в:

08.08.2023

Скачано:

0

Размер:

340.0556640625 KB
1      O’zbekiston Respublikasi Samarqand Davlat
Universiteti
Matematika fakulteti
Matematik Informatika yunalshi
                              225-guruh talabasi O’ktamov Shahbozjonning
KURS ISHI
Mavzu:   C++ t ilida    F ayllar  bilan ishlash   2 Reja :
Kirish
1.  Matn va binar fayllar ; 
2. O‘qish-yozish oqimlari. Standart oqimlar ; 
3. Belgilarni o‘qish-yozish funksiyalari ;
4. Satrlarni o‘qish - yozish funksiyalari ;
5. Fayldan o‘qish-yozish funksiyalari ; 
Xulosa
Foydalanilga adabiyot]
                 3   Kirish
C++   dasturlash   tili   C   tiliga   asoslangan.   C   esa   o'z   navbatida   B   va   BCPL
Tillaridan kelib chiqqan. BCPL 1967 yilda Martin Richards tomonidan tuzilgan va
operatsion sistemalarni yozish uchun mo'ljallangan edi. Ken Thompson o'zining B
tilida BCPL ning ko'p hossalarini kiritgan va B da UNIX operatsion sistemasining
birinchi versiyalarini yozgan.       C tilini Dennis Ritchie B dan keltirib chiqardi va
uni 1972 yili ilk bor  Bell Laboratories da, DEC PDP-11 kompyuterida qo'lladi. C
o'zidan oldingi  B va BCPL tillarining juda ko'p muhim tomonlarini o'z ichiga olish
bilan     bir   qatorda   o'zgaruvchilarni   tiplashtirdi   va   bir   qator   boshqa   yangiliklarni
kiritdi.   Boshlanishda   C   asosan   UNIX   sistemalarida   keng   tarqaldi.   Hozirda
operatsion   sistemalarning   asosiy   qismi   C/C++   da   yozilmoqda.   C   mashina
arhitekturasiga bog'langan tildir. Lekin yahshi rejalashtirish orqali dasturlarni turli
kompyuter   platformalarida   ishlaydigan   qilsa   bo'ladi.   1983   yilda,   C   tili   keng
tarqalganligi   sababli,   uni   standartlash   harakati   boshlandi.   Buning   uchun   Amerika
Milliy Standartlar Komiteti (ANSI) qoshida X3J11 tehnik komitet tuzildi. Va 1989
yilda   ushbu   standart   qabul   qilindi.     Standartni   dunyo   bo'yicha   keng   tarqatish
maqsadida 1990 yilda ANSI va Dunyo Standartlar Tashkiloti (ISO) hamkorlikda C
ning ANSI/ISO 9899:1990 standartini qabul qilishdi.  
Shu   sababli   C   da   yozilgan   dasturlar   kam   miqdordagi   o'zgarishlar   yoki   umuman
o'zgarishlarsiz   juda   ko'p   kompyuter   platformalarida   ishlaydi.       C++   1980   yillar
boshida   Bjarne   Stroustrup   tomonidan   C   ga   asoslangan     tarzda   tuzildi.   C++   juda
ko'p   qo'shimchalarni   o'z   ichiga   olgan,   lekin   eng   asosiysi   u   ob'ektlar   bilan
dasturlashga   imkon   beradi.     Dasturlarni   tez   va   sifatli   yozish   hozirgi   kunda   katta
ahamiyat   kasb   etmoda.   Buni   ta'minlash   uchun   ob'ektli   dasturlash   g'oyasi   ilgari
surildi.   Huddi   70-chi   yillar   boshida   strukturali   dasturlash   kabi,   programmalarni
hayotdagi   jismlarni     modellashtiruvchi   ob'ektlat   orqali   tuzish   dasturlash   sohasida
inqilob qildi.  C++ funksiya va ob'ektlarning juda boy kutubhonasiga ega. Yani C+
+   da     dasturlashni   o'rganish   ikki   qismga   bo'linadi.   Birinchisi   bu   C++   ni   o'zini
o'rganish,   ikkinchisi   esa   C++   ning   standart   kutubhonasidagi   tayyor
ob'ekt/funksiyalarni qo'llashni o'rganishdir. 41.  Matn fayl  - ASCII kodidagi belgilar bilan berilganlar maj-muasi. Belgilar
ketma-ketligi   satrlarga   bo‘lingan   bo‘ladi   va   satr-ning   tugash   alomati   sifatida   CR
(karetkani   qaytarish   yoki   ‘\r’)   LF   (satrni   o‘tkazish   yoki   ‘\n’)   belgilar   juftligi
hisoblanadi.   Matn   fayldan   berilganlarni   o‘qishda   bu   belgilar   juftligi   bitta   CR
belgisi   bilan   almashtiriladi   va   aksincha,   yozishda   CR   belgisi   ikkita   CR   va   LF
belgilariga almashtiriladi. Fayl oxiri #26 (^Z) belgisi bilan belgilanadi. 
Matn faylga boshqacha ta’rif berish ham mumkin. Agar faylni matn tahririda
ekranga   chiqarish   va   o‘qish   mumkin   bo‘lsa,   bu   matn   fayl.   Klaviatura   ham
kompьyuterga   faqat   matnlarni   jo‘natadi.   Boshqacha   aytganda   programma
tomonidan   ekranga   chiqariladigan   barcha   ma’lumotlarni   stdout   nomidagi   matn
fayliga   chiqarilmoqda   deb   qarash   mumkin.   Xuddi   shunday   klaviaturadan
o‘qilayotgan har qanday berilganlarni matn faylidan o‘qilmoqda deb hisoblanadi. 
Matn   fayllarining   komponentalari   satrlar   deb   nomlanadi.   Satrlar   uzluksiz
joylashib, turli uzunlikda va bo‘sh bo‘lishi mum kin.  Faraz qilaylik, T matn fayli 4
satrdan iborat bo‘lsin
Belgini oqimga chiqarish uchun putc() makrosi aniqlangan va uning prototipi
int putc(int c, FILE*stream) 
ko‘rinishida   aniqlangan.   putc()   funksiyasi   stream   nomi   bilan   berilgan   oqimga   s
belgini   chiqaradi.   Funksiya   qaytaruvchi   qiymati   sifatida   int   turiga   aylantirilgan   s
belgi bo‘ladi. Agar belgini chiqarishda xatolik ro‘y bersa EOF qaytariladi.
putc()   funksiyasini   standart   stdout   oqimi   bilan   bog‘langan   holati   -   putc(c,strout)
uchun putchar(c) makrosi aniqlangan.
Satrlarni o‘qish - yozish funksiyalari
Oqimdan satrni o‘qishga mo‘ljallangan gets() funksiyasining prototipi 
char * gets(char *s);
ko‘rinishida aniqlangan. gets() funksiyasi standart oqimdan satrni o‘qiydi va uni s
o‘zgaruvchisiga   joylashtiradi.   Joylashtirish   payti-da   oqimdagi   ‘\n’   belgisi   ‘\0’
belgisi   bilan   almashtiriladi.   Bu   funksiyani   ishlatishda   o‘qilayotgan   satrning
uzunligi   s   satr   uchun   ajratilgan   joy   uzunligidan   oshib   ketmasligini   nazorat   qilish
kerak bo‘ladi. 5puts() funksiyasi
  int puts(const char *s);
ko‘rinishida   bo‘lib,   u   standrat   oqimga   argumentda   ko‘rsatilgan   satrni   chiqaradi.
Bunda   satr   oxiriga   yangi   satrga   o‘tish   belgisi   ‘\n’   qo‘shiladi.   Agar   satrni   oqimga
chiqarish   muvaffaqiyatli   bo‘lsa   puts()   funksiyasi   manfiy   bo‘lmagan   sonni,   aks
holda EOF qaytaradi.
Satrni   o‘qish-yozish   funksiyalarini   ishlatishga   misol   tariqa-sida   qo‘yidagi
programmani keltirish mumki n :
1- satr#13#10 2- satr uzunroq #13#10 #13#10 4- satr#13#10#26
12.3-rasm. To‘rtta satrdan tashkil topgan matn fayli
Matnni   ekranga   chiqarishda   satr   oxiridagi   #13#10   boshqaruv   belgilari   juftligi
kursorni   keyingi   qatorga   tushiradi   va   uni   satr   boshiga   olib   keladi.   Bu   matn   fayl
ekranga chop etilsa, uning ko‘rinishi quyidagicha bo‘ladi:
1- satr[13][10]
2- satr uzunroq[13][10]
[13][10]
4- satr[13][10]
[26]
Matndagi   [n]   -   n-   kodli   boshqaruv   belgisini   bildiradi.   Odatda   matn   tahrirlari   bu
belgilarni ko‘rsatmaydi.
Bina   rfayllar   -   bu   oddiygina   b ayt lar   ketma-ketligi.   Odatda   binar   fayllardan
berilganlarni   foydalanuvchi   tomonidan   bevosita   «ko‘rish»   zarur   bo‘lmagan
hollarda   ishlatiladi.   Binar   fayllardan   o‘qish-yozishda   baytlar   ustida   hech   qanday
konvertatsiya amallari bajarilmaydi.
2.   O‘qish-yozish   oqimlari.   Standart   oqimla r .
Oqim   tushunchasi   berilganlarni   faylga   o‘qish-yozishda   ularni   belgilar
ketma-ketligi   yoki   oqimi   ko‘rinishida   tasavvur   qilishdan   kelib   chiqqan.
Oqim ustida quyidagi amallarni bajarish mumkin:
 oqimdan berilganlar blokini operativ xotiraga o‘qish; 6 operativ xotiradagi berilganlar blokini oqimga chiqarish;
 oqimdagi berilganlar blokini yangilash;
 oqimdan yozuvni o‘qish;
 oqimga yozuvni chiqarish.
Oqim   bilan   ishlaydigan   barcha   funksiyalar   buferli,   format-lashgan   yoki
formatlashmagan o‘qish-yozishni ta’minlaydi.
Programma ishga tushganda o‘qish-yozishning quyidagi standart oqimlar ochiladi:
stdin - o‘qishning standart vositasi;
stdout - yozishning standart vositasi;
stderr - xatolik haqida xabar berishning standart vositasi;
stdprn - qog‘ozga chop qilishning standart vositasi;
stdaux - standart yordamchi qurilma.
Kelishuv   bo‘yicha   stdin   -   foydalanuvchi   klaviaturasi,   stdout   va   stderr   -   terminal
(ekran),   stdprn   -   printer   bilan,   hamda   stdaux   -   kompьyuter   yordamchi   portlariga
bog‘langan  hisoblanadi. Berilgan-larni  o‘qish-yozishda  stderr  va stdaux oqimidan
boshqa oqimlar bufer-lanadi, ya’ni belgilar ketma-ketligi operativ xotiraning bufer
deb   nomlanuvchi   sohasida   vaqtincha   jamlanadi.   Masalan,   belgilarni   tashqi
qurilmaga chiqarishda belgilar ketma-ketligi buferda jamlanadi va bufer to‘lgandan
keyingina tashqi qurilmaga chiqariladi. 
Hozirdagi   operatsion   sistemalarda   klaviatura   va   displeylar   matn   fayllari   sifatida
qaraladi.   Haqiqatdan   ham   berilganlarni   klaviaturadan   programmaga   kiritish
(o‘qish)   mumkin,   ekranga   esa   chiqarish   (yozish)   mumkin.   Programma   ishga
tushganda standart o‘qish va yozish oqimlari o‘rniga matn fayllarni tayinlash orqali
bu   oqim-larni   qayta   aniqlash   mumkin.   Bu   holatni   o‘qishni   (yozishni)   qayta
adreslashro‘y   berdi   deyiladi.   O‘qish   uchun   qayta   adreslashda   ‘<’   belgisidan,
yozish uchun esa ‘>’ belgisidan foydalaniladi. Misol uchun gauss.exe bajariluvchi
programma   berilganlarni   o‘qishni   klaviaturadan   emas,   balki   massiv.txt   faylidan
amalga   oshirish   zarur   bo‘lsa,   u   buyruq   satrida   quyidagi   ko‘rinishda   yuklanishi
zarur bo‘ladi:
gauss.exe < massiv.txt 7Agar programma natijasini natija.txt fayliga chiqarish zarur bo‘lsa
gauss.exe > natija.txt
satri yoziladi. 
Va   nihoyat,   agar   berilganlarni   massiv.txt   faylidan   o‘qish   va   natijani   natija.txt
fayliga yozish uchun 
gauss.exe < massiv.txt > natija.txt
buyruq satri teriladi.
Umuman   olganda,   bir   programmaning   chiqish   oqimini   ikkinchi   programmaning
kirish oqimi bilan bog‘lash mumkin. Buni  konveyrli jo‘natish  deyiladi. Agar ikkita
junat.exe   programmasi   qabul.exe   programmasiga   berilganlarni   jo‘natishi   kerak
bo‘lsa, u holda ular o‘rtasiga ‘|’ belgi qo‘yib yoziladi:
junat.exe | qabul.exe
Bu   ko‘rinishdagi   programmalar   o‘rtasidagi   konveyrli   jo‘na-tishni   operatsion
sistemaning o‘zi ta’minlaydi.
Fayllar bilan ishlashning bitli rejimi.
Fayl bilan bitli almashish rejimi gets() va puts() funksiyalari yordamida
tashkil etiladi. Bu funksiyalarga esa quyidacha murojaat etiladi:
c = gets(fp);
puts(c,fp);
Bu yerda fp-ko‗rsatkich
c-int turidagi o‗zgaruvchi
Namuna. Klaviaturadan simvol kiritib faylga yozing. Matn oxirini ‗#‘
belgisi bilan ko‗rsating. Fayl nomi foydalanuvchidan so‗raladi. Agar <enter>
klavishasi bosilsa faylga CR va LF (qiymatlari 13 va 10) konstantalar yoziladi.
Keyinchalik fayldan simvollarni o‗qishda bu konstantalar satrlarni ajratishga
imkon beradi.
#include <stdio.h>
int main()
{
FILE *fp; 8char c;
const char CR = '\015';
const char LF = '\012';
char fname[20];
puts("fayl nomini kiriting:\n");
gets(fname);
if((fp = fopen(fname, "w")) == NULL)
{
perror(fname);
return 1;
}
while ((c = getchar())!= '#')
{
if (c == '\n')
{ putc(CR,fp);
78
putc(LF,fp);
}
else putc (c,fp);
}
fclose(fp);
}
3. Belgilarni o‘qish-yozish funksiyalari
Belgilarni o‘qish-yozish funksiyalari makros ko‘rinishida amalga oshirilgan.
getc() makrosi tayinlangan oqimdan navbatdagi belgini qayta-radi va kirish oqimi
ko‘rsatkichini   keyingi   belgini   o‘qishga   mos-lagan   holda   oshiradi.   Agar   o‘qish
muvaffaqiyatli   bo‘lsa   getc()   funksiyasi   ishorasiz   int   ko‘rinishidagi   qiymatni,   aks
holda EOF qaytaradi. Ushbu funksiya prototipi quyidagicha:
int getc(FILE * stream) 9EOF identifikator makrosi 
#define EOF(-1)
ko‘rinishida   aniqlangan   va   o‘qish-yozish   amallarida   fayl   oxirini   belgilash   uchun
xizmat   qiladi.   EOF   qiymati   ishorali   char   turida   deb   hisoblanadi.   SHu   sababli
o‘qish-yozish jarayonida unsigned char turidagi belgilar ishlatilsa, EOF makrosini
ishlatib bo‘lmaydi. 
Navbatdagi misol getc() makrosini ishlatishni namoyon qiladi.
#include <iostream.h>
#include <stdio.h>
int main()
{ 
 char ch;
 cout<<”Belgini kiriting: “;
 ch=getc(stdin);
 cout<<”Siz ”<<ch<<” belgisini kiritdingiz.\n”;
 return 0;
}
getc()  makrosi  aksariyat  holatlarda stdin oqimi  bilan ishlatil ganligi sababli, uning
getc(stdin)   ko‘rinishiga   ekvivalent   bo‘lgan   int   getchar()   makrosi   aniqlangan.
YUqoridagi   misolda   «ch=getc(stdin);»   qatorini   «ch=getchar();»   qatori   bilan
almashtirish mumkin.
Belgini oqimga chiqarish uchun putc() makrosi aniqlangan va uning prototipi
int putc(int c, FILE*stream) 
ko‘rinishida   aniqlangan.   putc()   funksiyasi   stream   nomi   bilan   berilgan   oqimga   s
belgini   chiqaradi.   Funksiya   qaytaruvchi   qiymati   sifatida   int   turiga   aylantirilgan   s
belgi bo‘ladi. Agar belgini chiqarishda xatolik ro‘y bersa EOF qaytariladi.
putc()   funksiyasini   standart   stdout   oqimi   bilan   bog‘langan   holati   -   putc(c,strout)
uchun putchar(c) makrosi aniqlangan. 104. Satrlarni o‘qish - yozish funksiyalari
Oqimdan satrni o‘qishga mo‘ljallangan gets() funksiyasining prototipi 
char * gets(char *s);
ko‘rinishida aniqlangan. gets() funksiyasi standart oqimdan satrni o‘qiydi va uni s
o‘zgaruvchisiga   joylashtiradi.   Joylashtirish   payti-da   oqimdagi   ‘\n’   belgisi   ‘\0’
belgisi   bilan   almashtiriladi.   Bu   funksiyani   ishlatishda   o‘qilayotgan   satrning
uzunligi   s   satr   uchun   ajratilgan   joy   uzunligidan   oshib   ketmasligini   nazorat   qilish
kerak bo‘ladi.
puts() funksiyasi
int puts(const char *s);
ko‘rinishida   bo‘lib,   u   standrat   oqimga   argumentda   ko‘rsatilgan   satrni   chiqaradi.
Bunda   satr   oxiriga   yangi   satrga   o‘tish   belgisi   ‘\n’   qo‘shiladi.   Agar   satrni   oqimga
chiqarish   muvaffaqiyatli   bo‘lsa   puts()   funksiyasi   manfiy   bo‘lmagan   sonni,   aks
holda EOF qaytaradi.
Satrni   o‘qish-yozish   funksiyalarini   ishlatishga   misol   tariqa-sida   qo‘yidagi
programmani keltirish mumkin.
#include <stdio.h>
int main()
{ 
 char *s;
 puts(”Satrni kiriting: “);
 gets(s);
 puts(”Kiritilgan satr: ”);
 puts(s);
 return 0;
} 115. Formatli o‘qish va yozish funksiyalari
Formatli   o‘qish   va   yozish   funksiyalari   -   scanf()   va   printf()   funksiyalari   S   tilidan
vorislik   bilan   olingan.   Bu   funksiyalarni   ishlatish   uchun  «stdio.h»   sarlavha   faylini
programmaga qo‘shish kerak bo‘ladi.
Formatli o‘qish funksiyasi scanf() quyidagi prototipga ega: 
int scanf(const char * <format>[<adres>,...])
Bu   funksiya   standart   oqimdan   berilganlarni   formatli   o‘qishni   amalga   oshiradi.
Funksiya,   kirish   oqimidagi   maydonlar   ketma-ket-ligi   ko‘rinishidagi   belgilarni
birma-bir   o‘qiydi   va   har   bir   maydonni   <format>   satrida   keltirilgan   format
aniqlashtiruvchi-siga   mos   ravishda   formatlaydi.   Oqimdagi   har   bir   maydonga
format   aniqlashtiruvchisi   va   natija   joylashadigan   o‘zgaruvchining   adresi   bo‘lishi
shart.   Boshqacha   aytganda,   oqimdagi   maydon   (ajratilgan   belgilar   ketma-ketligi)
ko‘rsatilgan   formatdagi   qiymatga   akslanti-riladi   va   o‘zgaruvchi   bilan   nomlangan
xotira bo‘lagiga joylashti-riladi (saqlanadi). Funksiya oqimdan berilganlarni o‘qish
jarayo-nini   «to‘ldiruvchi   belgini»   uchratganda   yoki   oqim   tugashi   natijasida
to‘xtatishi mumkin. Oqimdan berilganlarni o‘qish muvafaqqiyatli bo‘lsa, funksiya
muvafaqqiyatli   aylantirilgan   va   xotiraga   saqlangan   maydonlar   sonini   qaytaradi.
Agar   hech   bir   maydonni   saqlash   imkoni   bo‘lmagan   bo‘lsa,   funksiya   0   qiymatini
qaytaradi.   Oqim   oxiriga   kelib   qolganda   (fayl   yoki   satr   oxiriga)   o‘qishga   harakat
bo‘lsa, funksiya EOF qiymatini qaytaradi.
Formatlash satri - <format> belgilar satri bo‘lib, u uchta toifaga bo‘linadi:
 to‘ldiruvchi belgilar;
 to‘ldiruvchi  belgilardan farqli belgilar;
 format aniqlashtiruvchilari.
To‘ldiruvchi-belgilar   –   bu   probel,   ‘\t’,   ‘\n’   belgilari.   Bu   belgi lar   formatlash
satridan o‘qiladi, lekin saqlanmaydi.
To‘ldiruvchi   belgilardan   farqli   belgilar   –   bu   qolgan   barcha   ASCII   belgilari,   ‘%’
belgisilan tashqari. Bu belgilar formatlash satridan o‘qiladi, lekin saqlanmaydi.
12.1–jadval.  Format aniqlashtiruvchilari  va ularning vazifasi 12Komponenta Bo‘lishi 
shart   yoki
yo‘q Vazifasi
[*] Yo‘q Navbatdagi   ko‘rib   chiqilayotgan   maydon
qiymatini   o‘zgaruvchiga   o‘zlashtirmaslik
belgisi.   Kirish   oqimidagi   maydon   ko‘rib
chiqiladi,   lekin   o‘zgaruvchida
saqlanmaydi.
[<kenglik>] Yo‘q Maydon   kengligini   aniqlashtiruvchisi.
O‘qiladigan belgilarning maksimal sonini
aniqlaydi.   Agar   oqimda   to‘ldiruv–chi
belgi   yoki   almashtirilmaydigan   belgi
uchrasi   funksiya   nisbatan   kam   sondagi
belgilarni o‘qishi mumkin.   
[F|N] Yo‘q O‘zgaruvchi ko‘rsatkichining (adresining)
modifikatori:   F–   far   pointer;     N-   near
pointer     
[h|l|L] Yo‘q Argument   turining   modifikatori.   <tur
belgisi> bilan aniqlangan o‘zgaruvchining
qisqa   (short   -   h)   yoki   uzun   (long   –l,L)
ko‘ri–nishini aniqlaydi.
<tur belgisi> Ha Oqimdagi belgilarni almashtiriladigan tur
belgisi
Format  aniqlashtiruvchilari   – oqim maydonidagi belgilarni ko‘rib chiqish,
o‘qish   va   adresi   bilan   berilgan   o‘zgaruvchilar   turiga   mos   ravishda   almashtirish
jarayonini boshqaradi. Har bir format aniqlashtiruvchisiga bitta o‘zgaruvchi adresi
mos   kelishi   kerak.   Agar   format   aniqlashtiruvchilari   soni   o‘zgaruvchilardan   ko‘p
bo‘lsa,   nati-ja   nima   bo‘lishini   oldindan   aytib   bo‘lmaydi.   Aks   holda,   ya’ni
o‘zgaruvchilar soni ko‘p bo‘lsa, ortiqcha o‘zgaruvchilar inobatga olinmaydi.
Format aniqlashtiruvchisi quyidagi ko‘rinishga ega: 13% [*][<kenglik>] [F|N] [h|l|L] <tur belgisi>
Format aniqlashtiruvchisi ‘%’ belgisidan boshlanadi va undan keyin 12.1–jadvalda
keltirilgan shart yoki shart bo‘lmagan komponen-talar keladi. 
12.2–jadval. Almashtiriladigan tur alomati belgilari
Tur
alomati Kutilayotgan qiymat Argument turi
Son turidagi argument
d, D O‘nlik butun   int * arg yoki long * arg
E,e Suzuvchi nuqtali son float * arg
F Suzuvchi nuqtali son float * arg
G,g Suzuvchi nuqtali son float * arg
O Sakkizlik son int * arg
O Sakkizlik son long  * arg
I O‘nlik,   sakkizlik   va
o‘n oltilik butun son int  * arg
I O‘nlik,   sakkizlik   va
o‘n oltilik butun son long  * arg
U Ishorasiz o‘nlik son Unsigned int * arg
U Ishorasiz o‘nlik son Unsigned long * arg
X O‘n oltilik son int  * arg
X O‘n oltilik son int  * arg
Belgilar
S Satr char * arg (belgilar massivi)
C Belgi char   *   arg   (belgi   uchun   maydon  kengligi
berilishi   mumkin   (masalan,   %4s).   N
belgidan tashkil topgan belgilar massiviga
ko‘rsatkich: char  arg[N])   
% ‘%’  belgisi Hech   qanday   almashtirishlar   baja–
rilmaydi, ‘%’ belgisi saqlanadi.
Ko‘rsatkichlar
N int * arg %n   argumentigacha   muvaffaqiyatli 14 o‘qilgan   belgilar   soni,   aynan   shu   int
ko‘rsatkichi bo‘yicha adresda saqlanadi.
P YYYY:ZZZZ   yoki
ZZZZ   ko‘rinishidagi
o‘n oltilik  Ob’ektga ko‘rsatkich (far* yoki near*). 
Oqimdagi   belgilar   bo‘lagini   almashtiriladigan   tur   alomati-ning   qabul   qilishi
mumkin bo‘lgan belgilar 12.2-jadvalda keltirilgan.
12.3–jadval. Format aniqlashtiruvchilari  va ularning vazifasi
Komponenta Bo‘lishi
shart   yoki
yo‘q Vazifasi
[bayroq] Yo‘q Bayroq belgilari. CHiqarilayotgan qiy-matni
chapga   yoki   o‘nga   tekislashni,   sonning
ishorasini,   o‘nlik   kasr   nuqta-sini,   oxirdagi
nollarni,   sakkizlik   va   o‘n   oltilik   sonlarning
alomatlarni   chop   etishni   boshqaradi.
Masalan,   ‘-‘   bayrog‘i   qiymatni   ajratilgan
o‘ringa   nisbatan   chapdan   boshlab
chiqarishni   va   kerak   bo‘lsa   o‘ngdan   probel
bilan   to‘ldirishni   bildiradi,   aks   holda   chap
tomondan   probellar   bilan   to‘ldiradi   va
davomiga qiymat chiqariladi. 
[<kenglik>] Yo‘q Maydon   kengligini   aniqlashtiruvchisi.
CHiqariladigan   belgilarning   minimal   sonini
aniqlaydi.   Zarur   bo‘lsa   qiymat   yozilishidan
ortgan joylar probel bilan to‘ldiriladi.   
[.<xona > ] Yo‘q Aniqlik.   CHiqariladigan   belgilarning
maksimal   sonini   ko‘rsatadi.   Son dagi
raqamlarning minimal sonini.     
[F|N|h|l|L] Yo‘q O‘lcham   modifikatori.   Argumentning   qisqa 15 (short   -   h)   yoki   uzun   (long   –l,L)   ko‘ri-
nishini, adres turini aniqlaydi.
<tur belgisi> Ha Argument   qiymati   almashtiriladigan   tur
alomati belgisi
Formatli yozish funksiyasi printf() quyidagi prototipga ega: 
int printf(const char * <format>[,<argument>,...])
Bu funksiya standart oqimga formatlashgan chiqarishni amalga oshiradi. Funksiya
argumentlar   ketma-ketligidagi   har   bir   argument   qiymatini   qabul   qiladi   va     unga
<format> satridagi mos format aniqlashtiruvchisini qo‘llaydi va oqimga chiqaradi. 
12.4–jadval. printf() funksiyasining almashtiriladigan tur belgilari
Tur alomati Kutilayotgan qiymat CHiqish formati
Son qiymatlari
D Butun son   Ishorali o‘nlik butun son
I Butun son   Ishorali o‘nlik butun son
O Butun son   Ishorasiz sakkizlik butun son
U Butun son   Ishorasiz o‘nlik butun son
X Butun son   Ishorasiz   o‘n   oltilik   butun   son
(a,b,c,d,e,f belgilari ishlatiladi)
X Butun son   Ishorasiz   o‘n   oltilik   butun   son
(A,B,C,D,E,F belgilari ishlatiladi)
F Suzuvchi nuqtali son [-]dddd.dddd   ko‘rinishidagi   suzuvchi
nuqtali son
E Suzuvchi nuqtali son [-]d.dddd   yoki   e[+/-]ddd   ko‘rini–
shidagi suzuvchi nuqtali son
G Suzuvchi nuqtali son Ko‘rsatilgan   aniqlikka   mos   e   yoki   f
shaklidagi suzuvchi nuqtali son
E, G Suzuvchi nuqtali son Ko‘rsatilgan   aniqlikka   mos   e   yoki   f
shaklidagi   suzuvchi   nuqtali   son.   e
format uchun ‘E’ chop etiladi.  
Belgilar
S Satrga ko‘rsatkich 0-belgisi uchramaguncha yoki ko‘rsa- 16 tilgan   aniqlikka   erishilmaguncha
belgilar oqimga chiqariladi.
C Belgi Bitta belgi chiqariladi
% Hech nima ‘%’ belgisi oqimga chiqariladi.
Ko‘rsatkichlar
N int  ko‘rsatkich ( int* arg ) %n   argumentigacha   muvaffaqiyatli
chiqarilgan   belgilar   soni,   aynan   shu
int   ko‘rsatkichi   bo‘yicha   adresda
saqlanadi.
P  Ko‘rsatkich Argumentni YYYY:ZZZZ yoki ZZZZ
ko‘rinishidagi   o‘n   oltilik   songa
aylantirib oqimga chiqaradi. 
Har   bir   format   aniqlashtiruvchisiga   bitta   o‘zgaruvchi   adresi   mos   kelishi   kerak.
Agar format aniqlashtiruvchilari soni o‘zgaruvchi-lardan ko‘p bo‘lsa, natijada nima
bo‘lishini   oldindan   aytib   bo‘lmaydi.   Aks   holda,   ya’ni   o‘zgaruvchilar   soni   ko‘p
bo‘lsa, ortiqcha o‘zgaruvchilar inobatga olinmaydi. Agar oqimga chiqarish muvaf-
faqiyatli bo‘lsa, funksiya chiqarilgan baytlar sonini qaytaradi, aks holda EOF.  
printf()   funksiyasining   <format>   satri   argumentlarni   almash-tirish,   formatlash   va
berilganlarni oqimga chiqarish jarayonini boshqaradi va u ikki turdagi ob’ektlardan
tashkil topadi:
oqimga o‘zgarishsiz chiqariladigan oddiy belgilar;
argumentlar   ro‘yxatidagi   tanlanadigan   argumentga   qo‘llani-ladigan   format
aniqlashtiruvchilari.
Format aniqlashtiruvchisi quyidagi ko‘rinishga ega:
% [<bayroq>][<.kenglik>] [.<xona>][F|N|h|l|L] <tur belgisi>
Format aniqlashtiruvchisi ‘%’ belgisidan boshlanadi va undan keyin 12.3–jadvalda
keltirilgan shart yoki shart bo‘lmagan kompo-nentalar keladi. 
Almashtiriladigan   tur   belgisining   qabul   qilishi   mumkin   bo‘lgan   belgilar   12.4-
jadvalda keltirilgan. 17Berilganlar  qiymatlarini  oqimdan o‘qish va oqimga chiqarishda  scanf()  va prinf()
funksiyalaridan foydalanishga misol:
#include <stdio.h>
int main()
{
 int bson, natija;
 float hson;
 char blg, satr[81];
 printf("\nButun va suzuvchi nuqtali sonlarni,");
 printf("\nbelgi hamda satrni kiriting\n");
 natija=scanf("%d %f %c %s", &bson, &hson,&blg,satr);
 printf("\nOqimdan %d ta qiymat o'qildi ",natija);
 printf("va ular quyidagilar:");
 printf("\n %d %f %c %s \n",bson, hson, blg, satr);
 return 0; 
} 
Programma   foydalanuvchidan   butun   va   suzuvchi   nuqtali   sonlarni ,   belgi   va   satrni
kiritishni so‘raydi. Bunga javoban foydalanuvchi tomonidan
10 12.35 A Satr
qiymatlari kiritilsa, ekranga 
Oqimdan 4 ta qiymat o'qildi va ular quyidagilar:
10 12.35  A Satr
satrlari chop etiladi.
Fayldan o‘qish-yozish funksiya lari
Fayl   oqimi   bilan   o‘qish-yozish   amalini   bajarish   uchun   fayl   oqimini   ochish   zarur.
Bu ishni, prototipi 
FILE * fopen(const char* filename, const char *mode);
K o‘rinishida   aniqlangan   fopen()   funksiyasi   orqali   amalga   oshiri-ladi.   Funksiya
filename   nomi   bilan   faylni   ochadi,   u   bilan   oqimni   bog‘laydi   va   oqimni
identifikatsiya   qiluvchi   ko‘rsatkichni   javob   tariqasida   qaytaradi.   Faylni   ochish 18muvaffaqiyatsiz   bo‘lganligini   fopen()   funksiyasining   NULL   qiymatli   javobi
bildiradi. 
Parametrlar   ro‘yxatidagi   ikkinchi   -   mode   parametri   faylni   ochish   rejimini
aniqlaydi. U qabul qilishi mumkin bo‘lgan qiymat-lar 12.5- jadvalda keltirilgan.
12.5-jadval. Fayl ochish rejimlari
Mode qiymati Fayl ochilish holati tavsifi
R Fayl faqat o‘qish uchun ochiladi
W Fayl yozish uchun ochiladi. Agar bunday fayl mavjud bo‘lsa, u
qaytadan yoziladi (yangilanadi).
A Fayl ga   yozuvni qo‘shish   rejimi. Agar fayl mavjud bo‘lsa, fayl
uning oxiriga yozuvni yozish uchun ochiladi, aks holda yangi
fayl yaratiladi va yozish rejimida ochiladi. 
r+ Mavjud fayl o‘zgartirish (o‘qish va yozish )  uchun  ochiladi.
w+ YAngi   fayl   yaratil ib ,   o‘ zgartirish   (o‘qish   va   yozish )   uchun
ochiladi.   Agar   fayl   mavjud   bo‘lsa,   undagi   oldingi   yozuvlar
o‘chiriladi va u qayta yozishga tayyorlanadi. 
a+ Faylgayozuvni qo‘shish  rejimi. Agar fayl mavjud bo‘lsa, uning
oxiriga (EOF alomatidan keyin) yozuvni yozish (o‘qish) uchun
ochiladi,   aks   holda   yangi   fayl   yaratiladi   va   yozish   rejimida
ochiladi. 
Matn   fayli   ochilayotganligini   bildirish   uchun   fayl   ochilish   rejimi   satriga   ‘t’
belgisini   qo‘shib   yozish   zarur   bo‘ladi.   Masalan,   matn   fayl   o‘zgartirish   (o‘qish   va
yozish)   uchun   ochilayotganligini   bildirish   uchun   “rt+”   satri   yozish   kerak   bo‘ladi.
Xuddi   shunday   binar   fayllar   ustida   ishlash   uchun   ‘b’   belgisini   ishlatish   kerak.
Misol uchun fayl ochilishining “wb+” rejimi binar fayl yangilanishini bildiradi.
Fayl  o‘zgartirish  (o‘qish-yozish)   uchun  ochilganda, berilganlarni  oqimdan  o‘qish,
hamda   oqimga   yozish   mumkin.   Biroq   yozish   amalidan   keyin   darhol   o‘qib
bo‘lmaydi, buning uchun o‘qish amalidan oldin fseek() yoki rewind() funksiyalari
chaqirilishi shart. 19Faraz qilaylik «C:\\USER\\TALABA\\iat1kuz.txt» nomli matn faylni o‘qish uchun
ochish zarur bo‘lsin. Bu talab 
FILE *f=fopen(”C:\\USER\\TALABA\\iat1kuz.txt”,”r+”);
I fodasini   yozish   orqali   amalga   oshiraladi.   Natijada   diskda   mavjud   bo‘lgan   fayl
programmada   f   o‘zgaruvchisi   nomi   bilan   aynan   bir   narsa   deb   tushuniladi.
Boshqacha aytganda, programmada keyinchalik f ustida bajarilgan barcha amallar,
diskdagi «iat1kuz.txt» fayli ustida ro‘y beradi.
Fayl oqimi bilan ishlash tugagandan keyin u albatta yopilishi kerak. Buning uchun
fclose() funksiyasidan foydalaniladi. Funksiya prototipi quyidagi ko‘rinishga ega:
int fclose(FILE * stream);
fclose() funksiyasi oqim bilan bog‘liq buferlarni tozalaydi (masalan, faylga yozish
ko‘rsatmalari   berilishi   natijasida     buferda   yig‘ilgan   berilganlarni   diskdagi   faylga
ko‘chiradi) va faylni yopadi. Agar faylni yopish xatolikka olib kelsa, funksiya EOF
qiymatini, normal holatda 0 qiymatini qaytaradi. 
fgetc() funksiyasi prototipi 
int fgetc(FILE *stream);
K o‘rinishida   aniqlangan   bo‘lib,   fayl   oqimidan   belgini   o‘qishni   amalga   oshiradi.
Agar o‘qish muvafffaqiyatli bo‘lsa, funksiya o‘qilgan belgini int turidagi ishorasiz
butun songa aylantiradi. Agar fayl oxirini o‘qishga harakat qilinsa yoki xatolik ro‘y
bersa, funksiya EOF qiymatini qaytaradi. 
Ko‘rinib turibdiki, getc() va fgetc() funksiyalari deyarli bir xil ishni bajaradi, farqi
shundaki, getc() funksiyasi belgini standart oqimdan o‘qiydi. Boshqacha aytganda,
getc()   funksiyasi,   fayl   oqimi   standart   qurilma   bo‘lgan   fgetc()   funksiyasi   bilan
aniqlangan makrosdir.
fputc() funksiyasi
int fputc(int c, FILE *stream);
Prototipi   bilan   aniqlangan.   fputc()   funksiyasi   fayl   oqimiga   argu-mentda
ko‘rsatilgan belgini yozadi  (chiqaradi)  va u amal  qilishida putc() funksiyasi  bilan
bir xil. 
Fayl oqimidan satr o‘qish  uchun 20char * fgets(char * s, int n, FILE *stream)
P rototipi bilan fgets() aniqlangan. fgets() funksiyasi fayl oqimidan belgilar ketma-
ketligini   s   satriga   o‘qiydi.   Funksiya   o‘qish   jarayoni-ni   oqimdan   n-1   belgi
o‘qilgandan   keyin   yoki   keyingi   satrga   o‘tish   belgisi   (‘\n’)   uchraganda   to‘xtatadi.
Oxirgi   holda   ‘\n’   belgisi   ham   s   satrga   qo‘shiladi.   Belgilarni   o‘qish   tugagandan
keyin s satr  oxiriga, satr  tugash alomati ‘\0’ belgisi  qo‘shiladi. Agar  satrni  o‘qish
muvaf-faqiyatli   bo‘lsa,   funksiya   s   argument   ko‘rsatadigan   satrni   qaytaradi,   aks
holda NULL.
Fayl   oqimiga   satrni   fputs()   funksiyasi   yordamida   chiqarish   mum-kin.
Bufunksiyaprototipi
int fputs (const char *s, FILE *stream);
K o‘rinishida aniqlangan. Satr oxiridagi yangi satrga o‘tish belgisi va terminatorlar
oqimga   chiqarilmaydi.   Oqimga   chiqarish   muvaffa-qiyatli   bo‘lsa,   funksiya
nomanfiy son qaytaradi, aks holda EOF.
foef()   funksiyasi   aslida   makros   bo‘lib,   fayl   ustida   o‘qish-yozish   amallari
bajarilayotganda fayl oxiri belgisi uchragan yoki yo‘qligini bildiradi. Funksiya 
int feof(FILE *stream);
Prototipiga   ega   bo‘lib   u   fayl   oxiri   belgisi   uchrasa,   noldan   farqli   sonni   qaytaradi,
boshqa holatlarda 0 qiymatini qaytaradi.
Quyida keltirilgan misolda faylga yozish va o‘qishga amallari ko‘rsatilgan.
#include <iostream.h>
#include <stdio.h>
int main()
{
 char  s ;
 FILE *in,*out;
 if((in=fopen("D:\\ USER \\ TALABA . TXT ","rt"))==NULL)
 {
 cout<<"Talaba.txt faylini ochilmadi!!\n";
 return 1; 21}
 if((out=fopen("D:\\ USER \\ TALABA .DBL","wt+"))==NULL)
 {
 cout<<"Talaba.dbl faylini ochilmadi!!\n";
return 1;
}
 while (!feof(in))
 {
char c=fgetc(in);
cout<<c;
fputc(c,out);
}
 fclose(in);
 fclose(out);
 return 0;
}
Programmada  «talaba.txt» fayli  matn  fayli   sifatida  o‘qish  uchun  ochilgan va  u  in
o‘zgaruvchisi   bilan   bog‘langan.   Xuddi   shunday,   «talaba.dbl»   matn   fayli   yozish
uchun   ochilgan   va   out   bilan   bog‘langan.   Agar   fayllarni   ochish   muvaffaqiyatsiz
bo‘lsa, mos xabar  beriladi va programma o‘z ishini  tugatadi. Keyinchalik, toki in
fayli   oxiriga   etmaguncha,   undan   belgilar   o‘qiladi   va   ekranga,   hamda   out   fayliga
chiqariladi. Programma oxirida ikkita fayl ham yopiladi.
Masala.  G‘alvirli tartiblash usuli. 
Berilgan x vektorini pufakcha usulida kamaymaydigan qilib tartiblash quyidagicha
amalga   oshiriladi:   massivning   qo‘shni   elementlari     x
k   va   x
k+1   (k=1,..,n-1)
solishtiriladi.   Agar   x
k >x
k+1   bo‘lsa,   u   holda   bu   elementlar   o‘zaro   o‘rin   almashadi.
SHu  yo‘l   bilan   birinchi   o‘tishda   eng   katta   element   vektorning  oxiriga   joylashadi.
Keyingi   qadamda   vektor   boshidan   n-1   o‘rindagi   elementgacha   yuqorida   qayd
qilingan yo‘l bilan qolgan elementlarning eng kattasi n-1 o‘ringa joylashtiriladi va
h.k.      22G‘alvirli   tartiblash   usuli   pufakchali   tartiblash   usuliga   o‘xshash,   lekin   x
k   va   x
k+1
(k=1,2,3,..,n-1) elementlar o‘rin almashgandan keyin «g‘alvirdan» o‘tkazish amali
qo‘llaniladi: chap tomondagi kichik element imkon qadar chap tomonga tartiblash
saqlangan holda ko‘chiriladi. Bu usul oddiy pufakchali tartiblash usuliga nisbatan
tez ishlaydi.
Programma matni:
#include <stdio.h>
#include <alloc.h>
int * Pufakchali_Tartiblash(int*,int);
int main()
{
 char fnomi[80];
 printf("Fayl nomini kiriting:");
 scanf("%s", &fnomi);
 int Ulcham,i=0,* Massiv;
 FILE * f1, *f2;
 if((f1=fopen(fnomi,"rt"))==NULL)
 {
  printf("Xato:%s fayli ochilmadi!",fnomi);
  return 1;
 }
 fscanf(f1,"%d",&Ulcham);
 Massiv=(int *)malloc(Ulcham*sizeof(int));
 while(!feof(f1))
 fscanf(f1,"%d",&Massiv[i++]);
 fclose(f1);
 Massiv=Pufakchali_Tartiblash(Massiv,Ulcham);
 f2=fopen("natija.txt","wt");
 fprintf(f2,"%d%c",Ulcham,' ');
 for(i=0; i<Ulcham; i++) 23 fprintf(f2,"%d%c",Massiv[i],' ');
 fclose(f2);
 return 0;
}
int * Pufakchali_Tartiblash(int M[],int n)
{
 int almashdi=1, vaqtincha;
 for(int i=0; i<n-1 && almashdi;i++)
 {
  almashdi=0;
  for(int j=0; j<n-i-1;j++)
  if (M[j]>M[j+1])
  {
   almashdi=1;
   vaqtincha=M[j];
   M[j]=M[j+1];
   M[j+1]=vaqtincha;
   int k=j; 
   if(k)
    while(k && M[k]>M[k-1])
    {
 vaqtincha=M[k-1];
 M[k-1]=M[k];
 M[k]=vaqtincha;
 k--;
     }
   }
  }
  return M;
} 24Programmada   berilganlarni   oqimdan   o‘qish   yoki   oqimga   chiqarishda   fayldan
formatli   o‘qish   -   fscanf()   va   yozish   -   fprintf()   funk siyalaridan   foydalanilgan.   Bu
funksiyalarning   mos   ravishda   scanf()   va   printf()   funksiyalaridan   farqi   -   ular
berilganlarni   birinchi   argument   sifatida   beriladigan   matn   fayldan   o‘qiydi   va
yozadi.
Nomi   foydalanuvchi   tomonidan   kiritiladigan  f1  fayldan  butun  sonlar  massivining
uzunligi va qiymatlari o‘qiladi va tartiblangan massiv f2 faylga yoziladi.
Vektorni   tartiblash   Pufakchali_Tartiblash()   funksiyasi   tomoni-dan   amalga
oshiriladi. Unga vektor va uning uzunligi kiruvchi para metr bo‘ladi va tartiblangan
vektor funksiya natijasi sifatida qaytariladi.
Navbatdagi   ikkita   funksiya   fayl   oqimidan   formatlashmagan   o‘qish-yozishni
amalga oshirishga mo‘ljallangan.
fread() funksiyasi quyidagi prototipga ega:
size_t fread(void * ptr, size_t size, size_t n,
FILE *stream);
Bu funksiya oqimdan ptr  ko‘rsatib  turgan buferga, har  biri  size  bayt  bo‘lgan n ta
berilganlar blokini o‘qiydi. O‘qish muvaffaqiyatli bo‘lsa, funksiya o‘qilgan bloklar
sonini qaytaradi. Agar o‘qish jarayo-nida fayl oxiri uchrab qolsa yoki xatolik ro‘y
bersa, funksiya to‘liq o‘qilgan bloklar sonini yoki 0 qaytaradi.
fwrite() funksiyasiprototipi
size_t fwrite(const void*ptr,size_t size,
size_t n,FILE *stream);
Ko‘rinishi aniqlangan. Bu funksiya ptr ko‘rsatib turgan buferdan, har biri size bayt
bo‘lgan   n   ta   berilganlar   blokini   oqimga   chiqaradi.   YOzish   muvaffaqiyatli   bo‘lsa,
funksiya   yozilgan   bloklar   sonini   qayta-radi.   Agar   yozish   jarayonida   xatolik   ro‘y
bersa, funksiya to‘liq yozilgan bloklar sonini yoki 0 qaytaradi.
Fayl ko‘rsatkichini boshqarish funksiyalari
Fayl   ochilganda,   u   bilan   «stdio.h»   sarlavha   faylida   aniqlangan   FILE   strukturasi
bog‘lanadi.   Bu   struktura   har   bir   ochilgan   fayl   uchun   joriy   yozuv   o‘rnini
ko‘rsatuvchi   hisoblagichni   -   fayl   ko‘rsatkichini   mos   qo‘yadi.   Odatda   fayl 25ochilganda   ko‘rsatkich   qiymati   0   bo‘ladi.   Fayl   ustida   bajarilgan   har   bir   amaldan
keyin   ko‘rsatkich   qiymati   o‘qilgan   yoki   yozilgan   baytlar   soniga   oshadi.   Fayl
ko‘rsatkichini boshqarish funksiyalari - fseek(), ftell() va rewind() funksiyalari fayl
ko‘rsatkichini o‘zgartirish, qiymatini olish imkonini beradi. 
 ftell() funksiyasiningprototipi
long int ftell(FILE *stream);
K o‘rinishida aniqlangan bo‘lib, argumentda ko‘rsatilgan fayl bilan bog‘langan fayl
ko‘rsatkichi   qiymatini   qaytaradi.   Agar   xatolik   ro‘y   bersa   funksiya   -1L   qiymatini
qaytaradi.
int fseek(FILE *stream, long offset, int from);
Prototipiga ega bo‘lgan fseek()  funksiyasi  stream  fayli  ko‘rsatkichini  from  joyiga
nisbatan   offset   bayt   masofaga   surishni   amalga   oshiradi.   Matn   rejimidagi   oqimlar
uchun offset qiymati 0 yoki ftell() funksiyasi qaytargan qiymat bo‘lishi kerak. from
parametri quyidagi qiymat-larni qabul qilishi mumkin:
SEEK_SET (=0) - fayl boshi;
SEEK_CUR (=1) - fayl ko‘rsatkichining ayni paytdagi qiymati; 
SEEK_END (=2) - fayl oxiri.
Funksiya   fayl   ko‘rsatkichi   qiymatini   o‘zgartirish   muvaffaqiyat-li   bo‘lsa,   0
qiymatini, aks holda noldan farqli qiymat qaytaradi.
rewind() funksiyasi
void rewind(FILE *stream);
P rototipi bilan aniqlangan bo‘lib, fayl ko‘rsatkichini  fayl boshlanishi .
 
                                              XULOS A   
Matn   va   binar   fayllar .   C++   tili   S   tilidan   o‘qish-yozish   amalini   bajaruvchi
standart   funksiyalar   kutubxonasini   vorislik   bo‘yicha   olgan.   Bu   funksiyalar 26<stdio.h>   sarlavha   faylida   e’lon   qilingan.   O‘qish-yozish   amallari   fayllar   bilan
bajariladi. Fayl matn yoki binar (ikkilik) bo‘lishi mumkin.  
Matn   fayl   -   ASCII   kodidagi   belgilar   bilan   berilganlar   maj-muasi.   Belgilar
ketma-ketligi   satrlarga   bo‘lingan   bo‘ladi   va   satr-ning   tugash   alomati   sifatida   CR
(karetkani   qaytarish   yoki   ‘\r’)   LF   (satrni   o‘tkazish   yoki   ‘\n’)   belgilar   juftligi
hisoblanadi.   Matn   fayldan   berilganlarni   o‘qishda   bu   belgilar   juftligi   bitta   CR
belgisi   bilan   almashtiriladi   va   aksincha,   yozishda   CR   belgisi   ikkita   CR   va   LF
belgilariga almashtiriladi. Fayl oxiri #26 (^Z) belgisi bilan belgilanadi. 
Matn faylga boshqacha ta’rif berish ham mumkin. Agar faylni matn tahririda
ekranga   chiqarish   va   o‘qish   mumkin   bo‘lsa,   bu   matn   fayl.   Klaviatura   ham
kompьyuterga   faqat   matnlarni   jo‘natadi.   Boshqacha   aytganda   programma
tomonidan   ekranga   chiqariladigan   barcha   ma’lumotlarni   stdout   nomidagi   matn
fayliga   chiqarilmoqda   deb   qarash   mumkin.   Xuddi   shunday   klaviaturadan
o‘qilayotgan har qanday berilganlarni matn faylidan o‘qilmoqda deb hisoblanadi. 
Matn   fayllarining   komponentalari   satrlar   deb   nomlanadi.   Satrlar   uzluksiz
joylashib, turli uzunlikda va bo‘sh bo‘lishi mum kin.  Faraz qilaylik,  T  matn fayli 4
satrdan iborat 
                    Foydalanilga adabiyotlar
Nazirov Sh C++ da dasturlash asoslari 
Mardonova N.S, C++ tilida dasturlash  27Internet resureslari
 Htp///www.ziyo. net.uz -miliy axborat talim tarmogi
 Htp//www.mail.ru- uz milliy electron pochta hizmati
 Htp//www.edu.uz O’zbekiston talim portal
1. Delphi. Учебник. М. : “Питер”, 2003 г.
2. В.Т.Безручко.   Практикум   по   курсу   информатики.   М.   :   «Финансы   и
статистика», 2004 г.
3. Nazirov Sh.A., Qobulov R.V., Bobojanov M.R., Raxmanov Q.S. С va C++
tili.   “Voris-   Фаронов   В.   В.   Программирование   на   языке   высокого
уровня nashriyot” MCHJ, Toshkent 2013. 488 b.
4. П. Дарахвелидзе, Э. Марков. Программирование в Delphi7. Учебник.
Санкт- Петербург, “БХВ-Петербург” 2003 г.
5. Фаронов В. В. Программирование на языке высокого уровня Delphi.
Учебник. М. : “Питер”, 2003 г.
Elektron manbalar
1. http://cppstudio.com  – C++ tilida programmalash b о‘ yicha namunalar
izoxlari bilan  keltirilgan
2. http://cplusplus.com – C++ tilida mavjud konstruksiyalar ta’rifi, 
ishlatish namunalari bilan keltirilgan.
http://www. compteacher.ru/programming  – dasturlash

1 O’zbekiston Respublikasi Samarqand Davlat Universiteti Matematika fakulteti Matematik Informatika yunalshi 225-guruh talabasi O’ktamov Shahbozjonning KURS ISHI Mavzu: C++ t ilida F ayllar bilan ishlash

2 Reja : Kirish 1. Matn va binar fayllar ; 2. O‘qish-yozish oqimlari. Standart oqimlar ; 3. Belgilarni o‘qish-yozish funksiyalari ; 4. Satrlarni o‘qish - yozish funksiyalari ; 5. Fayldan o‘qish-yozish funksiyalari ; Xulosa Foydalanilga adabiyot]

3 Kirish C++ dasturlash tili C tiliga asoslangan. C esa o'z navbatida B va BCPL Tillaridan kelib chiqqan. BCPL 1967 yilda Martin Richards tomonidan tuzilgan va operatsion sistemalarni yozish uchun mo'ljallangan edi. Ken Thompson o'zining B tilida BCPL ning ko'p hossalarini kiritgan va B da UNIX operatsion sistemasining birinchi versiyalarini yozgan. C tilini Dennis Ritchie B dan keltirib chiqardi va uni 1972 yili ilk bor Bell Laboratories da, DEC PDP-11 kompyuterida qo'lladi. C o'zidan oldingi B va BCPL tillarining juda ko'p muhim tomonlarini o'z ichiga olish bilan bir qatorda o'zgaruvchilarni tiplashtirdi va bir qator boshqa yangiliklarni kiritdi. Boshlanishda C asosan UNIX sistemalarida keng tarqaldi. Hozirda operatsion sistemalarning asosiy qismi C/C++ da yozilmoqda. C mashina arhitekturasiga bog'langan tildir. Lekin yahshi rejalashtirish orqali dasturlarni turli kompyuter platformalarida ishlaydigan qilsa bo'ladi. 1983 yilda, C tili keng tarqalganligi sababli, uni standartlash harakati boshlandi. Buning uchun Amerika Milliy Standartlar Komiteti (ANSI) qoshida X3J11 tehnik komitet tuzildi. Va 1989 yilda ushbu standart qabul qilindi. Standartni dunyo bo'yicha keng tarqatish maqsadida 1990 yilda ANSI va Dunyo Standartlar Tashkiloti (ISO) hamkorlikda C ning ANSI/ISO 9899:1990 standartini qabul qilishdi. Shu sababli C da yozilgan dasturlar kam miqdordagi o'zgarishlar yoki umuman o'zgarishlarsiz juda ko'p kompyuter platformalarida ishlaydi. C++ 1980 yillar boshida Bjarne Stroustrup tomonidan C ga asoslangan tarzda tuzildi. C++ juda ko'p qo'shimchalarni o'z ichiga olgan, lekin eng asosiysi u ob'ektlar bilan dasturlashga imkon beradi. Dasturlarni tez va sifatli yozish hozirgi kunda katta ahamiyat kasb etmoda. Buni ta'minlash uchun ob'ektli dasturlash g'oyasi ilgari surildi. Huddi 70-chi yillar boshida strukturali dasturlash kabi, programmalarni hayotdagi jismlarni modellashtiruvchi ob'ektlat orqali tuzish dasturlash sohasida inqilob qildi. C++ funksiya va ob'ektlarning juda boy kutubhonasiga ega. Yani C+ + da dasturlashni o'rganish ikki qismga bo'linadi. Birinchisi bu C++ ni o'zini o'rganish, ikkinchisi esa C++ ning standart kutubhonasidagi tayyor ob'ekt/funksiyalarni qo'llashni o'rganishdir.

41. Matn fayl - ASCII kodidagi belgilar bilan berilganlar maj-muasi. Belgilar ketma-ketligi satrlarga bo‘lingan bo‘ladi va satr-ning tugash alomati sifatida CR (karetkani qaytarish yoki ‘\r’) LF (satrni o‘tkazish yoki ‘\n’) belgilar juftligi hisoblanadi. Matn fayldan berilganlarni o‘qishda bu belgilar juftligi bitta CR belgisi bilan almashtiriladi va aksincha, yozishda CR belgisi ikkita CR va LF belgilariga almashtiriladi. Fayl oxiri #26 (^Z) belgisi bilan belgilanadi. Matn faylga boshqacha ta’rif berish ham mumkin. Agar faylni matn tahririda ekranga chiqarish va o‘qish mumkin bo‘lsa, bu matn fayl. Klaviatura ham kompьyuterga faqat matnlarni jo‘natadi. Boshqacha aytganda programma tomonidan ekranga chiqariladigan barcha ma’lumotlarni stdout nomidagi matn fayliga chiqarilmoqda deb qarash mumkin. Xuddi shunday klaviaturadan o‘qilayotgan har qanday berilganlarni matn faylidan o‘qilmoqda deb hisoblanadi. Matn fayllarining komponentalari satrlar deb nomlanadi. Satrlar uzluksiz joylashib, turli uzunlikda va bo‘sh bo‘lishi mum kin. Faraz qilaylik, T matn fayli 4 satrdan iborat bo‘lsin Belgini oqimga chiqarish uchun putc() makrosi aniqlangan va uning prototipi int putc(int c, FILE*stream) ko‘rinishida aniqlangan. putc() funksiyasi stream nomi bilan berilgan oqimga s belgini chiqaradi. Funksiya qaytaruvchi qiymati sifatida int turiga aylantirilgan s belgi bo‘ladi. Agar belgini chiqarishda xatolik ro‘y bersa EOF qaytariladi. putc() funksiyasini standart stdout oqimi bilan bog‘langan holati - putc(c,strout) uchun putchar(c) makrosi aniqlangan. Satrlarni o‘qish - yozish funksiyalari Oqimdan satrni o‘qishga mo‘ljallangan gets() funksiyasining prototipi char * gets(char *s); ko‘rinishida aniqlangan. gets() funksiyasi standart oqimdan satrni o‘qiydi va uni s o‘zgaruvchisiga joylashtiradi. Joylashtirish payti-da oqimdagi ‘\n’ belgisi ‘\0’ belgisi bilan almashtiriladi. Bu funksiyani ishlatishda o‘qilayotgan satrning uzunligi s satr uchun ajratilgan joy uzunligidan oshib ketmasligini nazorat qilish kerak bo‘ladi.

5puts() funksiyasi int puts(const char *s); ko‘rinishida bo‘lib, u standrat oqimga argumentda ko‘rsatilgan satrni chiqaradi. Bunda satr oxiriga yangi satrga o‘tish belgisi ‘\n’ qo‘shiladi. Agar satrni oqimga chiqarish muvaffaqiyatli bo‘lsa puts() funksiyasi manfiy bo‘lmagan sonni, aks holda EOF qaytaradi. Satrni o‘qish-yozish funksiyalarini ishlatishga misol tariqa-sida qo‘yidagi programmani keltirish mumki n : 1- satr#13#10 2- satr uzunroq #13#10 #13#10 4- satr#13#10#26 12.3-rasm. To‘rtta satrdan tashkil topgan matn fayli Matnni ekranga chiqarishda satr oxiridagi #13#10 boshqaruv belgilari juftligi kursorni keyingi qatorga tushiradi va uni satr boshiga olib keladi. Bu matn fayl ekranga chop etilsa, uning ko‘rinishi quyidagicha bo‘ladi: 1- satr[13][10] 2- satr uzunroq[13][10] [13][10] 4- satr[13][10] [26] Matndagi [n] - n- kodli boshqaruv belgisini bildiradi. Odatda matn tahrirlari bu belgilarni ko‘rsatmaydi. Bina rfayllar - bu oddiygina b ayt lar ketma-ketligi. Odatda binar fayllardan berilganlarni foydalanuvchi tomonidan bevosita «ko‘rish» zarur bo‘lmagan hollarda ishlatiladi. Binar fayllardan o‘qish-yozishda baytlar ustida hech qanday konvertatsiya amallari bajarilmaydi. 2. O‘qish-yozish oqimlari. Standart oqimla r . Oqim tushunchasi berilganlarni faylga o‘qish-yozishda ularni belgilar ketma-ketligi yoki oqimi ko‘rinishida tasavvur qilishdan kelib chiqqan. Oqim ustida quyidagi amallarni bajarish mumkin:  oqimdan berilganlar blokini operativ xotiraga o‘qish;