Ma’ruza Matnli va binar fayllar


fprintf ( f, "%d\n", A[i] )


Download 0.49 Mb.
bet2/2
Sana17.06.2023
Hajmi0.49 Mb.
#1527063
1   2
Bog'liq
2.4.Matnli va Binar fayllar

fprintf ( f, "%d\n", A[i] );
  • fclose ( f );
  • }
    • int ReadArray(int A[], char fName[], int MAX)
    • {
    • ...
    • }
    • for (i = 0; i < N-1; i ++){
    • for (j = N-2; j >= i; j --)
    • if (A[j] > A[j+1]) {
    • c = A[j];
    • A[j] = A[j+1];
    • A[j+1] = c;
    • }
    • }
    • Saralash algoritmi
    • Vazifa
    • input.txt faylda sonlar ustun shaklida berilgan. Soni noma’lum, lekin 100 tadan ko’p emas.
    • 1. Оxirgi raqamini kamayishi bo’yicha massivni saralang va natijani output.txt faylga yozing.
    • 2. Raqamlarni yi’g’indisi bo’yicha massivni saralang va natijani output.txt faylga yozing.
    • Muhimligi:
    • Ma’lumotlar mashina formatida saqlanadi (matnli redaktorda o’qib bo’lmaydi)
    • Xotiradan biror qismini o’qishimiz va yozishimiz mumkin (faqat bitlarda…)
    • Sendvich prinsipi (ochish – ishlash – yopish)
    • Faylga ko’rsatkich orqali murojaat.
    • Faylli ko’rsatkich
    • FILE *fp;
    • Ikkilik faylni ochish va yopish
    • Faylni ochish
    • fp = fopen ( "input.dat", "rb" );
    • "rb" = read binary (oqish)
    • "wb" = write binary (yozish)
    • "ab" = append binary (qo’shish)
    • Ochishdagi xatolik
    • if ( fp == NULL ) { printf(“fayl ochilmadi.");
    • }
    • Faylni yopish
    • fclose ( fp );
    • Blok bo’yicha o’qish
    • Massiv boshidan o’qish
    • int A[100];
    • n = fread ( A, sizeof(int), 100, fp );
    • Xotiradagi manzil(«qaerga»):
    • A  &A[0]
    • Bitta blok o’lchami
    • Butun tipli o’zgaruvchi o’lchami
    • Bloklar soni
    • Faylga ko’rsatkich
    • O’qilganlar
    • Massiv o’rtasidan o’qish
    • int A[100];
    • n = fread ( A+5, sizeof(int), 2, fp );
    • 2 ta butun son o’qiladi:
    • A[5], A[6]
    • 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
    • Massivni alohida elementlarini yozish
    • int A[100];
    • n = fwrite( A+5, sizeof(int), 2, fp );
    • 2 ta butun son o’qiladi:
    • A[5], A[6]
    • Xotirada saqlash: satr bo’yicha (С++, Pasсal)
    • 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 );
    • Misol
    • Masala: input.dat fayldagi massiv elementlarini o’qing va ularni 2 ga ko’paytirib natijani output.dat fayliga yoizing.
    • Dastur tuzilishi:
    • #include
    • main()
    • {
    • const int N = 10;
    • int i, A[N], n;
    • FILE *fp;
    • // input.dat faylidan o’qish
    • for ( i = 0; i < n; i ++ )
    • A[i] = A[i] * 2;
    • // output.dat fayliga yozish
    • }
    • O’qilganlar
    • Fayllar bilan ishlash
    • fp = fopen( "input.dat", "rb" );
    • if ( fp == NULL ) {
    • printf(“fayl ochilmadi.");
    • return;
    • }
    • n = fread ( A, sizeof(int), N, fp );
    • if ( n < N )
    • printf(“faylda ma’lumotlar yetishmayapdi");
    • fclose ( fp );
    • Ma’lumotlarni o’qish:
    • fp = fopen( "output.dat", "wb" );
    • fwrite ( A, sizeof(int), n, fp );
    • fclose ( fp );
    • Ma’lumotlarni yozish:
    • kritik xatolik
    • kritik bo’lmagan xatolik
    • qancha o’qildi
    • Vazifa
    • 3. input.txt matnli faylda butun sonlar berilgan. Ularni saralang va output.dat ikkilik faylga yozing.
    • 4. input1.txt va input2.txt matnli fayllarda massivlar berilgan. Ularni bitta massivga birlashtiring, saralang va natijani ikkilik formatda output.dat faylga yozing.
    • Vazifa: input.txt faylida matn berilgan. Satrda “anaqa” so’zi ko’p ishlatilgan. Matnni bu so’zdan xalos eting va output.txt faylga yozing.
    • input.txt fayli:
      • Oyi anaqa derazani anaqa yuvdim.
      • Shunga anaqa yo’l kiraga anaqa pul bering, iltimos.
      • Gul anaqa gulzorda anaqa yaxshi ochiladi.
      • Har bir talaba anaqa besh olishni xoxlaydi.
    • output.txt natija fayli:
      • Oyi derazani yuvdim.
      • Shunga yo’l kiraga pul bering iltimos.
      • Gul gulzorda yaxshi ochiladi.
      • Har bir talaba besh olishni xoxlaydi.
    • Matnli fayllarni qayta ishlash
    • Muhimligi:
      • Bir vaqtda ikkita faylni ochish lozim (bittasini o’qish, ikkinchisini yozish uchun).
    • Algoritm:
      • Ikkala fayl ham ochiq.
      • Satrni o’qish.
      • Barcha ", anaqa,“so’zni ochiring.
      • Satrni ikkinchi faylga yozish.
      • 2-qadamga o’tish.
      • Ikkala faylni yopish.
    • Ma’lumotlar tugamadimi
    • Fayllar bilan ishlash
    • main()
    • {
    • char s[80], *p;
    • int i;
    • FILE *fIn, *fOut;
    • fIn = fopen("input.txt", "r");
    • fOut = fopen("output.txt", "w");
    • ... // faylni qayta ishlash
    • fclose(fIn);
    • fclose(fOut);
    • }
    • Fayllarga ko’rsatkich
    • faylni o’qish uchun ochish
    • faylni yozish uchun ochish
    • Qidirish uchun ko’rsatkich
    • faylni yopish
    • Matnlarni qayta ishlash
    • s satrni o’qish :
    • while ( 1 ) {
    • p = strstr ( s, ", anaqa," );
    • if ( p == NULL ) break;
    • strcpy ( p, p + 9 );
    • }
    • 9 ta simvolni o’chirish
    • agar topilmasa sikldan chiqarish
    • char s[80], *p;
    • FILE *fIn;
    • ... // faylni ochish
    • p = fgets ( s, 80, fIn );
    • if ( p == NULL )
    • printf(“fayl tugadi.");
    • else printf(“O’qilgan satrlar:\n%s", s);
    • s satrni qayta ishlash :
    • satr
    • uzunligi
    • fayl
    • #include
    • Fayllarni qayta ishlashni to’liq sikli
    • while ( 1 ) {
    • p = fgets ( s, 80, fIn );
    • if ( p == NULL ) break;
    • while ( 1 ) {
    • p = strstr ( s, ", anaqa," );
    • if ( p == NULL ) break;
    • strcpy ( p, p + 9 );
    • }
    • fputs ( s, fOut );
    • }
    • while ( 1 ) {
    • p = strstr ( s, ", anaqa," );
    • if ( p == NULL ) break;
    • strcpy ( p, p + 9 );
    • }
    • Agarda satr bo’lmasa sikldan chiqarish
    • Satrni qayta ishlash
    • “tozalangan" satrni yozish
    • Satrni o’qish
    • Vazifa
    • input.txt faylda nechtaligi noma’lum bo’lgan satrlar yozilgan.
    • 5:Matndagi barcha «qisqasi» ni «anaqa» ga almashtiring va output.txt faylga yozing.
    • 6: Matndagi barcha «anaqa» ni «qisqasi» ga almashtiring va output.txt faylga yozing..
    • int main() {
    • FILE *fIn, *fOut; fIn = fopen("input.txt", "r");
    • fOut = fopen("output.txt", "w");
    • string a,b,s,key1="anaqa",key2="yaxshi"; char str[1000];
    • int i,j,n,l1=key1.size(),l2=key2.size(); bool f;
    • while(fgets(str,1000,fIn))
    • {
    • s = str; n = s.size();
    • for(i=0;i
    • {
    • f=1;
    • for(j=0;j
    • if (s[i+j]!=key1[j]) {f=0; break;}
    • if (f)
    • { s.erase(s.begin()+i,s.begin()+i+l1);
    • s.insert(s.begin()+i,key2.begin(),key2.end());
    • n = s.size();
    • i=i+l2 - 1;
    • }
    • }
    • fputs(s.c_str(),fOut); } return 0;}
    • Dastur

    Download 0.49 Mb.

    Do'stlaringiz bilan baham:
    1   2




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