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;
- }
- }
- 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.
- Ikkilik faylni ochish va yopish
- fp = fopen ( "input.dat", "rb" );
- "rb" = read binary (oqish)
- "wb" = write binary (yozish)
- "ab" = append binary (qo’shish)
- if ( fp == NULL ) { printf(“fayl ochilmadi.");
- }
- int A[100];
- n = fread ( A, sizeof(int), 100, fp );
- Xotiradagi manzil(«qaerga»):
- A &A[0]
- Butun tipli o’zgaruvchi o’lchami
- int A[100];
- n = fread ( A+5, sizeof(int), 2, fp );
- 2 ta butun son o’qiladi:
- A[5], A[6]
- int A[100];
- n = fwrite( A, sizeof(int), 100, fp );
- Xotiradagi soha manzili(«qayerdan»):
- A &A[0]
- Butun tipli o’zgaruvchi o’lchami
- 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)
- int A[3][3];
- FILE *fp = fopen("output.dat", "wb");
- ... // matrisani to’ldirish
- n = fwrite( A, sizeof(int), 9, fp );
- 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
- }
- 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 );
- fp = fopen( "output.dat", "wb" );
- fwrite ( A, sizeof(int), n, fp );
- fclose ( fp );
- 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.
- 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);
- }
- faylni o’qish uchun ochish
- faylni yozish uchun ochish
- Qidirish uchun ko’rsatkich
- while ( 1 ) {
- p = strstr ( s, ", anaqa," );
- if ( p == NULL ) break;
- strcpy ( p, p + 9 );
- }
- 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);
- 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
- “tozalangan" satrni yozish
- 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;}
Do'stlaringiz bilan baham: |