title: Oqimlarni ochish va yopish
text: |
  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; }
  |
  | |