C++ dasturlash tilida fayllar bilan ishlash


Ma’lumotlarni o‘qish va yozish


Download 255.77 Kb.
Pdf ko'rish
bet7/8
Sana05.10.2023
Hajmi255.77 Kb.
#1692541
1   2   3   4   5   6   7   8
Bog'liq
C dasturlash tilida fayllar bilan ishlash (1)

Ma’lumotlarni o‘qish va yozish. Quyi darajada ma’lumotlarni kiritish va 
chiqarish read() va write() funksiyalari orqali amalga oshiriladi. Bu funksiyalar 
quyidagicha ko‘rinishda yoziladi: 
int read (int fd, char * buffer; unrigned int count); 
int write (int fd, char * buffer; unsiqned int count).
Ikkala funksiya butun o‘qilgan yoki yozilgan baytlar sonini qabul qiladi. 
Read funksiyasi fd nomi bilan ochilgan fayldan count parametrida ko‘rsatilgan 
miqdordagi baytlarni o‘qib, buffer ko‘rsatkichi orqali ko‘rsatilgan bufferga yozadi. 
Fayl oxiriga yetganda read() funktsyasi 0 qiymat qabul qiladi. Fayldan o‘qishda 
xatolik kelib chiqsa, -1 qiymat qabul qiladi. Bunda o‘qish fayldagi joriy o‘rindan 
boshlanadi. Agar fayl matnli rejimda ochilsa CR va LF belgilari ‘\n’ belgiga 
o‘zgartiriladi. 
write() funksiyasi fd nomi bilan ochilgan faylga buffer ko‘rsatkichi 
yordamida ko‘rsatilgan bufferdan count parametri orqali ko‘rsatilgan miqdordagi 


baytlarni yozib qo‘yadi. Yozuv joriy o‘rindan boshlanadi. Agar fayl matnli rejimda 
ochilgan bo‘lsa’\n’ belgini CR va LF belgilar sifatida yoziladi. Agar yozishda 
xatolik kelib chiqsa, write() funksiyasi -1 qiymat qabul qiladi. Errno global 
o‘zgaruvchisi bo‘lsa errno.h sarlavhali faylda ko‘rsatilgan quyidagi konstantalar 
biriga teng bo‘ladi: 
EACCES – fayl yozuvdan himoyalangan; 
ENOSPC – tashqi qurilmada bo‘sh joy qolmagan; 
EBADF – noto‘g‘ri fayl nomi. 
Ushbu funksiyalar io.h sarlavhali faylda joylashtirilgan.
Yuqorida keltirilgan funksiyalardan foydalanish quyidagi misolda keltirilgan: 
5-misol. Bir fayldan ikkinchisiga nusxa olish dasturi. Ushbu misolning dastur 
kodi quyidagicha: 
#include  
#include  
#include  
using namespace std; 
int main(int argc, char *argv[ ] ) 

int fdin , fdout; 
int n;
char buff[BUFSIZ]; 
if (argc !=3) 
{
cout<< ("Formatni aniqlash: "); 
cout<<("\n fayllar turlari", 
argv[0]); 
return 1; 
}
if ((fdin =open(argv[1], O_RDONLY)) ==-1) 
{


perror (argv[1]); 
return 1; 

if ((fdout=open(argv[2], 
O_WRONLY|O_CREAT|O_TRUNC))== -1) 

perror (argv[2]); 
return 1; 

while ((n=read(fdin, buff, BUFSIZ))>0)
write (fdout, buff, n ); 
return 0; 

BUFSIZ konstantasi stdio.h sarlavhali faylda aniqlangan bo‘lib 512 bayt 
xotiraga teng. 

Download 255.77 Kb.

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




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