int bayt = ftell(f);
cout << k <<" ftell(f)=" << bayt << endl;
}
fclose(f);
system (“pause”);
return 0;
}
Misol 3. n natural soni berilgan. Elementlari n ta butun sondan iborat bo`lgan faylni hosil qiluvchi va juft elementlar ini 2 marta orttiruvchi programma tuzilsin.
#include
#include
int main()
{
int n, k;
FILE *f;
// binar faylni yozish va o'qish uchun ochish
f = fopen("binar", "wb+");
if (f == NULL)
{
cout << "Faylni hosil qilishda xato bo'ldi";
return 1;
}
cout << "n="; cin >> n;
for (int i = 0; i < n; i++)
{
cin >> k;
fwrite(&k, sizeof(k), 1, f);
}
// fayl ko'rsatkichini fayl boshiga qo'yish
rewind(f);
while (!feof(f)) // fayl oxiri uchramasa bajar
{
fread(&k, sizeof(k), 1, f);
if (k % 2 == 0 )
{
k *= 2;
// fayl ko'rsatkichini sizeof(int) bayt chapga surish
fseek(f, -sizeof(int), SEEK_CUR);
fwrite(&k, sizeof(int), 1, f);
// fayl ko'rsatkichini o'rnatish
fseek(f, ftell(f), SEEK_SET);
}
}
cout << "fayl elementlari\n";
rewind(f);
while (fread(&k, sizeof(k), 1, f))
cout << k << endl;
fclose(f);
return 0;
}
3 - misolni quyidagicha yechish ham mumkin.
#include
#include
using namespace std;
int main()
{
int n, k;
FILE *f;
f = fopen("binar", "wb+");
cout << "n="; cin >> n;
for (int i = 0; i < n; i++)
{
cin >> k;
fwrite(&k, sizeof(k), 1, f);
}
// fayl ko'rsatkichini fayl boshiga qo'yish
rewind(f);
while (!feof(f))
{
// fayl ko'rsatkichi o'rnini eslab qolish
int pos = ftell(f);
fread(&k, sizeof(k), 1, f);
if (k % 2 == 0 )
{
k *= 2;
// fayl ko'rsatkichini oldingi xolatiga o'rnatish
fseek(f, pos, SEEK_SET);
fwrite(&k, sizeof(int), 1, f);
// fayl ko'rsatkichi o'rnini sizeof(int) ga surish
pos += sizeof(int);
fseek(f, pos, SEEK_SET);
}
}
cout << "fayl elementlari\n";
rewind(f);
// fayl elementlarini chiqarish
while (fread(&k, sizeof(k), 1, f))
cout << k << endl;
fclose(f);
system (“pause”);
return 0;
}
Eng dasturiy ta'minot dasturlari fayllar bilan ishlash, va shuning uchun u yaratish uchun zarur bo'lgan, olib
tashlash, write o'qish, ochiq fayllar. Agar fayl nima? Fayl - bayt bir ismli yig'ish, saqlash qurilmasiga saqlanishi
mumkin. Yaxshi, u endi aniq, Agar fayl bayt tartib ekanligini, qaysi uning bor, noyob nomi, masalan, файл.txt.
Shu katalog bir xil nom bilan fayllarni o'z ichiga olmaydi. Fayl nomi ostida uning nomi bilan emas, balki faqat
tushuniladi, balki kengaytirish, masalan,: file.txt va file.dat – boshqa fayllar, va hatto bir xil nom bor.
Bunday narsa bor, Fayl nomi bilan katalog fayl uchun to'liq manzil - faylning to'liq nomi sifatida,
masalan,: D:\docs\file.txt. Bu asosiy tushunchalarni tushunish muhim emas, aks holda fayllar bilan
ishlash uchun qiyin bo'ladi. Fayllar bilan ishlash uchun siz header faylni o'z ichiga
kerak
Do'stlaringiz bilan baham: |