Тўғри мурожаатли файлларни киритишчиқариш. Истисно ҳолатларига ишлов бериш. Faylga ixtiyoriy murojaat qilish Funksiyalar faylga ketma-ket yozish yoki ketma-ket o'qishga imkon beradi. Fayldan o'qib faylga yozishlar doim joriy pozisiyada bo'ladi. Boshlang'ich pozisiya fayl ochilganda aniqlanadi. Faylni r va w rejimida ochilganda joriy pozisiya ko'rsatkichi faylning birligi baytini ko'rsatadi, a rejimida ochilganda, ochish baytini ko'rsatadi. Har bir kiritish-chiqarish amali bajarilganda, ko'rsatkich o'qilgan baytlar soniga qarab yangi pozisiyaga ko'chadi. Faylga ixtiyoriy murojaat qilish Fayldan ma'lumot oqilganda fayl ko'rsatkichi avtomarik ravishda oqilgan yoki yozilgan bayt miqdoricha siljiydi. Fayl ko'rsatkichning joriy pozisiyasini aniqlash uchun ftell ishlatiladi. long ftell (FILE*) Fayl ko'rsatkichini siljitish uchun fseek () funksiyasidan foydalaniladi. int fseek (faylga ko'rsatkich, oraliq, hisobot boshi) Hisobot boshi quyidagi konstantalardan biri bilan aniqlanadi: Faylga ixtiyoriy murojaat qilish fseek () funksiyasi 0 qaytaradi agar faylda ko'chish bajarilgan bo'lsa, aksincha noldan farqli songa teng bo'ladi Ixtiyoriy pozisiyadan fayl boshiga o'tish: fseek (fp, ol, SEEKSET) Ixtiyoriy pozisiyadan fayl boshiga o'tish: fseek (fp, ol, SEEKEND) Joriy pozisiyadan bir bayt oldinga yoki orqaga ko'chish uchun fseek (jp, -1L, SEEKCUR). Fayl ko'rsatkichini fayl boshiga ornatish uchun rewind ishlatiladi void rewind (FILE*) Bu amalni fayl ko'rsatkichini siljitish orqali ham amalga oshirish mumkin fseek (f, 0, SEEKSET). Ma'lumotlarni massivga yozish Fayldan simvollar avval to'g'ri tartibda, so'ngra teskari tartibda o'qish int main() char file[256]; char ch; FILE *fp, *wp; long count, last = 0; puts(fayl nomini kiriting:n); wp = fopen(output.txt,w); if ((fp = fopen(input.txt,r)) == NULL) fprintf (wp, %s, Faylni ochib bo'lmadin); getch(); return 0; Ma'lumotlarni massivga yozish Fayldan simvollar avval to'g'ri tartibda, so'ngra teskari tartibda o'qish (davomi) while(!feof(fp)) ch = getc(fp); putchar(ch); putchar('n'); last++; for (count = 1L; count ...
Тўғри мурожаатли файлларни киритишчиқариш. Истисно ҳолатларига ишлов бериш. Faylga ixtiyoriy murojaat qilish Funksiyalar faylga ketma-ket yozish yoki ketma-ket o'qishga imkon beradi. Fayldan o'qib faylga yozishlar doim joriy pozisiyada bo'ladi. Boshlang'ich pozisiya fayl ochilganda aniqlanadi. Faylni r va w rejimida ochilganda joriy pozisiya ko'rsatkichi faylning birligi baytini ko'rsatadi, a rejimida ochilganda, ochish baytini ko'rsatadi. Har bir kiritish-chiqarish amali bajarilganda, ko'rsatkich o'qilgan baytlar soniga qarab yangi pozisiyaga ko'chadi. Faylga ixtiyoriy murojaat qilish Fayldan ma'lumot oqilganda fayl ko'rsatkichi avtomarik ravishda oqilgan yoki yozilgan bayt miqdoricha siljiydi. Fayl ko'rsatkichning joriy pozisiyasini aniqlash uchun ftell ishlatiladi. long ftell (FILE*) Fayl ko'rsatkichini siljitish uchun fseek () funksiyasidan foydalaniladi. int fseek (faylga ko'rsatkich, oraliq, hisobot boshi) Hisobot boshi quyidagi konstantalardan biri bilan aniqlanadi: Faylga ixtiyoriy murojaat qilish fseek () funksiyasi 0 qaytaradi agar faylda ko'chish bajarilgan bo'lsa, aksincha noldan farqli songa teng bo'ladi Ixtiyoriy pozisiyadan fayl boshiga o'tish: fseek (fp, ol, SEEKSET) Ixtiyoriy pozisiyadan fayl boshiga o'tish: fseek (fp, ol, SEEKEND) Joriy pozisiyadan bir bayt oldinga yoki orqaga ko'chish uchun fseek (jp, -1L, SEEKCUR). Fayl ko'rsatkichini fayl boshiga ornatish uchun rewind ishlatiladi void rewind (FILE*) Bu amalni fayl ko'rsatkichini siljitish orqali ham amalga oshirish mumkin fseek (f, 0, SEEKSET). Ma'lumotlarni massivga yozish Fayldan simvollar avval to'g'ri tartibda, so'ngra teskari tartibda o'qish int main() char file[256]; char ch; FILE *fp, *wp; long count, last = 0; puts(fayl nomini kiriting:n); wp = fopen(output.txt,w); if ((fp = fopen(input.txt,r)) == NULL) fprintf (wp, %s, Faylni ochib bo'lmadin); getch(); return 0; Ma'lumotlarni massivga yozish Fayldan simvollar avval to'g'ri tartibda, so'ngra teskari tartibda o'qish (davomi) while(!feof(fp)) ch = getc(fp); putchar(ch); putchar('n'); last++; for (count = 1L; count ...