Информатика


Ma`lumotlarni o`qish va yozish


Download 7.16 Mb.
Pdf ko'rish
bet168/300
Sana25.08.2023
Hajmi7.16 Mb.
#1670002
1   ...   164   165   166   167   168   169   170   171   ...   300
Bog'liq
informatika Mominov

Ma`lumotlarni o`qish va yozish. Quyi darajada ma`lumotlarni kiritish va 
chiqarish read () va write () funksiyalari orqali amalga oshiriladi. Bu funksiyalar 
prototiplari quyidagi ko`rinishga ega:
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 qaytaradi. Read 
funksiyasi fd deskriptori bilan ochilgan fayldan count parametrida ko`rsatilgan 
miqdordagi baytlarni o`qib, buffer ko`rsatkichi orqali ko`rsatilgan bufferga yozadi. 
Fayl oxiriga yetganda read() funksiyasi 0 qiymat qaytaradi. Fayldan o`qishda 
xatolik kelib chiqsa -1 qiymat qaytaradi. O`qish fayldagi joriy pozitsiyadan 
boshlanadi. Agar fayl matnli rejimda ochilsa, CR va LF simvollari `\n` simvoliga 
o`zgartiriladi. 
Write() funksiyasi fd deskriptori bilan ochilgan faylga buffer ko`rsatkichi 
orqali ko`rsatilgan bufferdan count parametri orqali ko`rsatilgan miqdordagi 
baytlarni yozib qo`yadi. Yozuv joriy pozitsiyadan boshlanadi. Agar fayl matnli 
rejimda ochilgan bo`lsa, `\n` simvolini CR va LF simvollar sifatida yoziladi. Agar 
yozishda xatolik kelib chiqsa, write() funksiyasi -1 qiymat qaytaradi. Errno global 


287 
o`zgaruvchisi bo`lsa, Errno.h sarlavhali faylda ko`rsatilgan quyidagi o`zgarmaslar 
biriga teng bo`ladi. 
5.16-jadval. Errno.h kutubxonasining funksiyalari. 
Nomi 
Vazifasi 
EACCES 
fayl yozuvdan himoyalangan 
ENOSPC 
tashqi qurilmada bo`sh joy qolmagan 
EBADF 
noto`g`ri fayl deskriptori 
Bu funksiyalar io.h sarlavhali faylda joylashgandir. Quyida bir fayldan 
ikkinchisiga nusxa olish dasturini ko`rib chiqamiz: 
112-listing.
Output: 
#include  
#include  
#include  
#include  
int main(int argc, char *argv[ ] ) { 
int fdin , fdout;
int n;
char buff[BUFSIZ]; 
if (argc !=3) {
cout<< (“: ”); 
cout<<(“\n 
%s ”, 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]); 


288 
return 1; }
while ((n=read(fdin, buff, BUFSIZ))>0)
write (fdout, buff, n ); 
return 0; }
Bufsiz o`zgarmassi iostream.h sarlavhali faylda aniqlangan bo`lib MS DOS 
uchun 512 bayt ga teng. 

Download 7.16 Mb.

Do'stlaringiz bilan baham:
1   ...   164   165   166   167   168   169   170   171   ...   300




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