Toshkent amaliy fanlar universiteti


Fayl ochishdagi hatoliklar


Download 1.85 Mb.
bet4/4
Sana23.08.2023
Hajmi1.85 Mb.
#1669345
1   2   3   4
Bog'liq
1) 11-mavzu(Matinli va binar fayllar)

Fayl ochishdagi hatoliklar

  • main()
  • {
  • FILE *f;
  • int n, x, S = 0;
  • f = fopen ( "input.txt", "r" );
  • if ( f == NULL ) {
  • printf(“Fayl topilmadi.");
  • getch(); return 0;
  • }
  • while ( 1 ) {
  • n = fscanf ( f, "%d", &x );
  • if ( n != 1 ) break;
  • S += x;
  • }
  • fclose ( f );
  • f = fopen ( "output.txt", "w" );
  • fprintf ( f, "S = %d", S );
  • fclose ( f ); }
  • Faylni ochishda xatolik
  • Ma’lumotlarni o’qish sikli: n  1 da chiqish.
  • Natijani yozish

Ma’lumotlarni massivga yozish

  • int ReadArray ( int A[], char fName[], int MAX )
  • {
  • int N = 0, k;
  • FILE *f;
  • f = fopen ( fName, "r" );
  • while ( 1 ) {
  • k = fscanf ( f, "%d", &A[N]);
  • if ( k != 1 ) break;
  • N ++;
  • if ( N >= MAX ) break;
  • }
  • fclose(f);
  • return N; }
  • Fayldan massivni o’quvchi funksiya massiv elementlar sonini chiqaradi (kamida MAX):
  • massiv
  • Agarda o’qish mumkin bo’lmasa sikldan chiqish
  • fayl nomi
  • chegara
  • … yoki massiv to’ldi

Amaliy masala:

  • input.txt faylida matn berilgan. Satrda “anaqa” so’zi ko’p ishlatilgan. Matnni bu so’zdan xalos eting va output.txt faylga yozing.

Binar va fizik fayllar

fopen() - funksiyasi

  • Faylni ochishda xatolik sodir bo’lsa, fopen funksiyasi NULL qiymat qaytaradi.
  • fopen(“fayl_nomi”,”ochish_turi”);
  • Faylni yozishda xatolik sodir bo’lmasa, fclose() funksiyasi nol qiymat qaytaradi. Xato sodir bo’lsa, EOF – fayl ohiri qaytariladi.
  • fclose(fayl_o’zgaruvchisi);

Binar faylni ochish va yopish

  • Faylni ochish
  • fp = fopen ( "input.dat", "rb" );
  • "rb" = read binary (oqish)
  • "wb" = write binary (yozish)
  • "ab" = append binary (qo’sish)
  • Ochishdagi xatolik
  • if ( fp == NULL ) { printf(“fayl ochilmadi.");
  • }
  • Faylni yopish
  • fclose ( fp );

fprintf() va fscanf() funksiyasi

  • 1- etap. Faylni ochish (uni ishga tayyorlash va uni
  • faollashtirish)
  • f = fopen(“bir.txt", “rb");
  • fclose ( f );
  • fscanf ( f, "%d", &n ); // n qiymatini kiritish
  • fprintf( f, "n=%d", n ); // n qiymatini yozish
  • ("rb", англ. read) faqat o’qish uchun
  • f = fopen(“bir.txt", "wb");
  • f = fopen(“bir.txt", "ab");
  • ("ab", англ. append) faqat yangilash uchun
  • O’zgaruvchi tipi
  • «faylga ko’rsatkich»: FILE *f;

fscanf() va fprintf() misol

Bloklar bo’yicha yozish

  • Massiv boshidan yozish
  • int A[100];
  • n = fwrite( A, sizeof(int), 100, fp );
  • Xotiradagi soha manzili(«qayerdan»):
  • A  &A[0]
  • Bitta blok o’lchami
  • Butun tipli o’zgaruvchi o’lchami
  • Bloklar soni
  • Faylga ko’rsatkich
  • Yozilganlar soni
  • int A[100];
  • n = fwrite( A+5, sizeof(int), 2, fp );
  • 2 ta butun son o’qiladi:
  • A[5], A[6]

Massiv elementlarini binar faylga yozish

Bloklar bo’yicha o’qish

  • Massiv boshidan yozish
  • int A[100];
  • n = fwrite( A, sizeof(int), 100, fp );
  • Xotiradagi soha manzili(«qayerdan»):
  • A  &A[0]
  • Bitta blok o’lchami
  • Butun tipli o’zgaruvchi o’lchami
  • Bloklar soni
  • Faylga ko’rsatkich
  • Yozilganlar soni
  • Massivni alohida elementlarini yozish
  • int A[100];
  • n = fread ( A+5, sizeof(int), 2, fp );
  • 2 ta butun son o’qiladi:
  • A[5], A[6]

Misol:

Matrisa bilan ishlash

  • Xotirada saqlash: satr bo’yicha
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • Matrisalarga yozish
  • int A[3][3];
  • FILE *fp = fopen("output.dat", "wb");
  • ... // matrisani to’ldirish
  • n = fwrite( A, sizeof(int), 9, fp );

Matritsalar bilan ishlashga misol:

Faylni ochishda xatolik

Fayl ko’rsatgichi bilan ishlash funksiyalari

  • Fayl ko’rsatgichini kelgan joyini aniqlash uchun ftell funksiyasi ishlatiladi.
  • long int ftell(FILE * stream);
  • Fayl ko’rsatgichini siljitish uchun fseek funksiyasi ishlatiladi.
  • int fseek (FILE * stream, long int offset, int whence);

Xulosa

  • Matnli fayllarda ma’lumotlarni saqlash va ularni dasturlash tillari yordamida qayta ishlash - katta hajmdagi ma’lumotlardan samarali va tez foydalanish imkoniyatlarini yaratadi.
  • C++ da BINAR fayllardan kompilyatsiya jarayonida operativ xotira hajmini juda katta hajmdagi dinamik ma’lumotlar bilan band qilishni oldini olish uchun qo’llaniladi.

Download 1.85 Mb.

Do'stlaringiz bilan baham:
1   2   3   4




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