C++ fayllarga ishlov berish va ularni boshqarish uchun ifstream



Download 0,73 Mb.
bet2/7
Sana20.06.2022
Hajmi0,73 Mb.
#679296
1   2   3   4   5   6   7
Bog'liq
8-hafta mashg\'uloti dasturlashdan

Faylga ma’lumot yozish
Oddiy ma’lumot turiga ega qiymatlarni, massivlarni, satrlarni va ob’yektlarni faylga yozish uchun, ofstream sinfidan foydalanishimiz mumkin.

2.Faylning mavjud ekanligi qanday tekshiriladi?Faylning oxirini tekshirish qanday amalga oshiriladi?


Javobi:
2.Fayl mavjudligini tekshirish
Agar faylni o`qishda fayl mavjud bo`lmasa, dasturimiz ishga tushadi va noto`g`ri natija beradi. Xo`sh, bizning dasturimiz fayl bor yoki yo`qligini tekshira oladimi? Ha. Biz open funksiyasidan so`ng darxol fail( ) funksiyasini chaqirishimiz mumkin. Agar fail( ) funksiyasi true qiymat qaytarsa, u fayl mavjud emasligidan darak beradi.
1 // Faylni ochish
2 input.open("natijalar.txt");
3
4 if(input.fail())
5 {
6 cout << "File does not exist"<< endl;
7 cout << "Exit program"<< endl;
8
9 return 0;
10 }
Fayl so`ngini tekshirish
8.2-kodli ro`yxat ma’lumot faylidan ikki satrni o`qiydi. Agar biz faylda nechta satr borligini bilmasak va ularning barchasini o`qitishni istasak, fayl so`ngini qanday qilib aniqlaymiz?
O`tgan semestrda ko`rib chiqqanimiz, ushbu dasturni esga olamiz:
1 #include
2 #include
3 using namespace std;
4
5 int main()
6 {
7 // Faylni ochish
8 ifstream input("natija.txt");
9
10 double sum = 0;
11 double number;
12 while(!input.eof()) // Agar fayl so`ngi bo`lmasa davom ettirish
13 {
14 input >> number; // Ma’lumotni o`qish
15 cout << number << " "; // Ma’lumotni ko`rsatish
16 sum += number;
17 }
18
19 input.close();
20
21 cout << "\nSum = "<< sum << endl;
22
23 return 0;
24 }
Mazkur dasturda fayl so’ngini aniqlash uchun eof() funksiyasidan foydalanishimiz mumkin. Shunga qaramasdan, agar fayl so`ngida bitta qo`shimcha bo`sh joy mavjud bo`lsa ham dastur ishlamaydi. Buni tushunib olish uchun, keling, 8.3-rasmda keltirilgan fayldagi sonlarni qaraymiz. Bu faylda so`ngi sondan keyin bitta qo`shimcha bo`sh joy borligiga e’tibor qarating.

8.3-rasm. Fayl bo`sh joylar bilan ajratilgan sonlardan tashkil topgan.
Agar quyidagi kodni qo`llab barcha ma’lumotlarni o`qitsak va ularning barchasini qo`shsak, oxirgi son ikki marta qo`shiladi.
ifstream input("natija.txt");
doublesum = 0;
doublenumber;
while(!input.eof()) // Agar fayl so`ngi bo`lmasa davom ettirish
{
input >> number; // Ma’lumotni o`qish
cout << number << " "; // Ma’lumotni ko`rsatish
sum += number;
}
Bunga sabab, oxirgi son – 85.6 o`qilganda, fayl tizimi bu so`ngi son ekanligini bilmaydi, chunki, undan so`ng bitta bo`sh joy turibdi. Shundan kelib chiqan holda, eof() funksiyasi false ni qaytaradi. Dastur sonni qayta o`qiganda esa, eof() funksiyasi true qiymat qaytaradi, ammo number o`zgaruvchisi o`zgartirilmaydi, chunki hech narsa o`qilmaydi. number o`zgaruvchisi sum ga qayta qo`shilganda ham 85.6 ga teng bo`lib turaveradi.
Bu muammoni yechishning ikki xil yo`li bor. Birinchisi, eof() funksiyasining to`g`ri javob qaytarishini tekshirishdir. Agar u true qiymat qaytarsa, quyidagi kodda berilganidek, sikl to`xtatiladi:
ifstream input("natija.txt");

Download 0,73 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