title: Ma`lumotlarni o`qish va yozish
text: 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.