Mantiqiy va matnli fayllar bilan ishlash


Fayl ko'rsatkichi bilan ishlovchi funksiyalar



Download 1,04 Mb.
bet5/7
Sana22.07.2022
Hajmi1,04 Mb.
#836293
1   2   3   4   5   6   7
Bog'liq
c builder

Fayl ko'rsatkichi bilan ishlovchi funksiyalar


Fayldan ma'lumot o'qiganda yoki yozganda fayl ko'rsatkichi avtomat ravishda o'qilgan yoki yozilgan bayt miqdoricha siljiydi. Fayl ko'rsatkichi ning kelgan joyini aniqlash uchun ftell funksiyasi ishlariladi.
long int ftell ( FILE * stream );
Fayl ko'rsatkichini siljitish uchun fseekfunksiyasi ishlatiladi.
int fseek ( FILE * stream, long int offset, int whence);
Bu funksiya offset da ko'ratilgan bayt miqdoricha siljishni amalga oshiradi. whence o'zgaruvchisi quyidagi qiymatlarni qabul qilishi mumkin:



4-rasm

Agar whence = 1 bo'lsa (SEEK_CUR), offset musbat (o'ngga siljish) yoki manfiy (chapga siljish) bo'lishi mumkin.


Fayl ko'rsatkichini faylning boshiga o'rnatish uchun rewind funksiyasi ishlatiladi.
void rewind ( FILE * stream );
Bu amalni fayl ko'rsatkichini siljitish orqali ham amalga oshirish mumkin.
fseek (f, 0, SEEK_SET);
Agar faylda faqat butun sonlar yozilgan bo'lsa, uning к - elementi ga murojaat quyidagicha bo'ladi.
fseek (f, sizeof(int) * (k - 1), SEEK_SET);
fread (&n, sizeof(int), 1, f);
Fayl oxirini aniqlash uchun feof funksiyasi ishlatiladi.
int feof ( FILE * stream );
feof funksiyasi fayl ko'rsatkichi fayl oxirida bo'lsa, noldan farqli qiymat qaytaradi. Boshqa hollarda nol qaytaradi.
2 - misol. n natural soni berilgan. Elementlari n ta butun sondan iborat bo' Igan faylni hosil qiluvchi va ekranga chiqaruvchi dastur tuzilsin.
#include
#include
using namespace std;
int main() {
int n, k;
FILE *f;
f = fopen("binar", "wb+");
// binar faylni yozish va o'qish uchun ochish
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(к), 1, f) ; }
// fayl ko'rsatkichini fayl boshiga qo'yish rewind(f);
while (fread(&k, sizeof(k), 1, f)) {
//fayl boshidan fayl ko'rsatkichi turgan o'ringacha bo'lgan baytlar
int bayt = ftell (f);
cout « к «" ftell (f)=" « bayt « endl; }
fclose (f);
return 0; }

3 - misol. n natural soni berilgan. Elementlari n ta butun sondan iborat bo' Igan faylni hosil qiluvchi va juft elementlarini 2 marta orttiruvchi programma tuzilsin.


#include
#include
using namespace std;
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(к), 1, f);
if (k % 2 == 0 ) {
к *= 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 elementlariXn";
rewind(f);
while (fread(&k, sizeof(k), 1, f))
cout « к « 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 о'mini eslab qolish
int pos = ftell(f);
fread(&k, sizeof(k), 1, f);
if (k % 2 == 0 ) {
к *= 2;
// fayl ko'rsatkichini oldingi xolatiga o'matish
fseek(f, pos, SEEK_SET);
fwrite(&k, sizeof(int), 1, f) ;
// fayl ko'rsatkichi о'mini 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 « к « endl;
fclose(f);
return 0; }


    1. Download 1,04 Mb.

      Do'stlaringiz bilan baham:
1   2   3   4   5   6   7




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

kiriting | ro'yxatdan o'tish
    Bosh sahifa
юртда тантана
Боғда битган
Бугун юртда
Эшитганлар жилманглар
Эшитмадим деманглар
битган бодомлар
Yangiariq tumani
qitish marakazi
Raqamli texnologiyalar
ilishida muhokamadan
tasdiqqa tavsiya
tavsiya etilgan
iqtisodiyot kafedrasi
steiermarkischen landesregierung
asarlaringizni yuboring
o'zingizning asarlaringizni
Iltimos faqat
faqat o'zingizning
steierm rkischen
landesregierung fachabteilung
rkischen landesregierung
hamshira loyihasi
loyihasi mavsum
faolyatining oqibatlari
asosiy adabiyotlar
fakulteti ahborot
ahborot havfsizligi
havfsizligi kafedrasi
fanidan bo’yicha
fakulteti iqtisodiyot
boshqaruv fakulteti
chiqarishda boshqaruv
ishlab chiqarishda
iqtisodiyot fakultet
multiservis tarmoqlari
fanidan asosiy
Uzbek fanidan
mavzulari potok
asosidagi multiservis
'aliyyil a'ziym
billahil 'aliyyil
illaa billahil
quvvata illaa
falah' deganida
Kompyuter savodxonligi
bo’yicha mustaqil
'alal falah'
Hayya 'alal
'alas soloh
Hayya 'alas
mavsum boyicha


yuklab olish