C++ dasturlash tilida fayllar bilan ishlash
Ma’lumotlarni o‘qish va yozish
Download 255.77 Kb. Pdf ko'rish
|
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: |
Ma'lumotlar bazasi mualliflik huquqi bilan himoyalangan ©fayllar.org 2024
ma'muriyatiga murojaat qiling
ma'muriyatiga murojaat qiling