Նկարագրում է, թե ինչպես է C ծրագրավորողը ստեղծում, բացում և փակում տեքստային ֆայլ կամ երկուական ֆայլ:
Ֆայլը նշանակում է բայթերի շարք, լինի դա տեքստային ֆայլ, թե երկուական ֆայլ, C Language-ը ոչ միայն ապահովում է մուտք դեպի վերին մակարդակի գործառույթներ, այլև ապահովում է հիմքում ընկած (ՕՀ) կանչ՝ ֆայլերը պահեստավորման սարքում մշակելու համար։ . Այս գլուխը կբացատրի փաստաթղթերի կառավարման կարևոր կոչերը:
բաց ֆայլ
Սովորաբար օգտագործելով fopen () ֆունկցիան նոր ֆայլ ստեղծելու կամ գոյություն ունեցող ֆայլ բացելու համար, այս կանչը սկզբնավորում է FILE տիպի օբյեկտ, որը պարունակում է բոլոր անհրաժեշտ տեղեկությունները հոսքը կառավարելու համար: Ահա այս ֆունկցիայի կանչի նախատիպը.
FILE *fopen (const char * filename, const char * ռեժիմ);
Այստեղ ֆայլի անունը ֆայլ անվանելու տող է, մուտքի ռեժիմի արժեքը կարող է լինել հետևյալ արժեքներից մեկը.
օրինակը | նկարագրությունը |
r | Բացեք գոյություն ունեցող տեքստային ֆայլ, որը թույլ է տալիս կարդալ այն: |
w | Բացեք տեքստային ֆայլ, որը թույլ է տալիս գրել ֆայլին: Եթե ֆայլը գոյություն չունի, նոր ֆայլ է ստեղծվում: Այստեղ ձեր ծրագիրը գրում է բովանդակությունը ֆայլի սկզբից: Եթե ֆայլը գոյություն ունի, այն կկտրվի զրոյական երկարությամբ և նորից կգրվի: |
a | Բացեք տեքստային ֆայլ և գրեք ֆայլին հավելվածի ռեժիմում: Եթե ֆայլը գոյություն չունի, նոր ֆայլ է ստեղծվում: Այստեղ ձեր ծրագիրը բովանդակություն է ավելացնում այն ֆայլերին, որոնք արդեն ունեք: |
r+ | Բացեք տեքստային ֆայլ, որը թույլ է տալիս կարդալ և գրել ֆայլը: |
w+ | Բացեք տեքստային ֆայլ, որը թույլ է տալիս կարդալ և գրել ֆայլը: Եթե ֆայլն արդեն գոյություն ունի, ֆայլը կրճատվում է մինչև զրոյական երկարություն, իսկ եթե ֆայլը գոյություն չունի, ստեղծվում է նոր ֆայլ: |
a+ | Բացեք տեքստային ֆայլ, որը թույլ է տալիս կարդալ և գրել ֆայլը: Եթե ֆայլը գոյություն չունի, նոր ֆայլ է ստեղծվում: Ընթերցումը սկսվում է ֆայլի սկզբից, և գրությունը միայն հավելվածի ռեժիմում է: |
Եթե մշակվում է երկուական ֆայլ, օգտագործեք հետևյալ մուտքի ռեժիմը՝ վերը նշվածը փոխարինելու համար.
«rb», «wb», «ab», «rb+», «r+b», «wb+», «w+b», «ab+», «a+b»
փակ ֆայլ
Ֆայլը փակելու համար օգտագործեք fclose() ֆունկցիան։ Գործառույթի նախատիպը հետևյալն է.
int fclose (FILE *fp);
- Եթե ֆայլը հաջողությամբ փակված է, fclose() ֆունկցիան վերադարձնում է զրո, իսկ եթե սխալը վերադարձնում է EOF: Այս ֆունկցիան, փաստորեն, հեռացնում է տվյալները բուֆերից, փակում է ֆայլը և ազատում այդ ֆայլի համար օգտագործվող ողջ հիշողությունը։ EOF-ը հաստատուն է, որը սահմանված է վերնագրի ֆայլում stdio.h
C ստանդարտ գրադարանը տրամադրում է տարբեր գործառույթներ՝ ֆայլերը նիշերով կամ որպես ֆիքսված երկարությամբ տողի կարդալու և գրելու համար:
Գրեք ֆայլին
Ահա հոսքի մեջ նիշեր գրելու ամենապարզ գործառույթները.
int fputc (int c, FILE *fp);
Fputc () ֆունկցիան գրում է c պարամետրի նիշերի արժեքը ելքային հոսքի մեջ, որի վրա մատնանշում է fp-ը: Եթե գրառումները հաջող են, այն վերադարձնում է գրված նիշը և EOF-ը, եթե սխալ է տեղի ունենում: Դուք կարող եք օգտագործել հետևյալ ֆունկցիան հոսքի վրա զրոյականով ավարտվող տող գրելու համար.
int fputs (const char *s, FILE *fp);
Fputs () ֆունկցիան գրում է s տողը ելքային հոսքում, որտեղ fp-ը մատնանշում է: Եթե գրառումները հաջողվում են, այն վերադարձնում է ոչ բացասական արժեք և EOF, եթե սխալ է տեղի ունենում: Կարող եք նաև օգտագործել int fprintf ֆունկցիան (FILE * fp, const char * ձևաչափ,...) ֆայլում տող է գրում: Փորձեք հետևյալ օրինակը.
Նշում. Համոզվեք, որ ունեք հասանելի tmp գրացուցակ, և եթե այն գոյություն չունի, նախ պետք է այն ստեղծեք ձեր համակարգչում:
/ tmp սովորաբար ժամանակավոր գրացուցակ է Linux համակարգի վրա: Եթե դուք աշխատում եք Windows համակարգով, դուք պետք է այն փոխեք տեղական միջավայրում գոյություն ունեցող գրացուցակի մեջ, ինչպիսիք են՝ C: \ tmp, D: \ tmp և այլն:
կենդանի օրինակ
#ներառել
Երբ վերը նշված կոդը կազմվում և կատարվում է, այն ստեղծում է նոր ֆայլ test.txt / tmp գրացուցակում: Եվ գրում է երկու տողի վրա՝ օգտագործելով երկու տարբեր ֆունկցիաներ: Եկեք հաջորդիվ կարդանք այս ֆայլը:
Կարդացեք ֆայլը
Հետևյալը ֆայլից մեկ նիշ կարդալու ամենապարզ գործառույթն է.
int fgetc (FILE * fp);
Fgetc () ֆունկցիան կարդում է նիշ մուտքագրված ֆայլից, որին ցույց է տալիս fp-ը: Վերադարձի արժեքը ընթերցված նիշն է և EOF-ը, եթե սխալ է տեղի ունենում: Հետևյալ գործառույթը թույլ է տալիս կարդալ տողը հոսքից.
char *fgets (char *buf, int n, FILE *fp);
Fgets () ֆունկցիան կարդում է n-1 նիշ fp-ով ուղղորդվող մուտքային հոսքից: Այն պատճենում է ընթերցված տողը բուֆերային բուֆում և վերջում ավելացնում է զրոյական նիշ՝ տողը վերջացնելու համար:
Եթե այս ֆունկցիան բախվում է կոտրված տողի «\ n» նիշին կամ ֆայլի վերջի EOF-ին, մինչև վերջին նիշը կարդալը, այն կվերադառնա միայն կարդացված նիշերին, ներառյալ տողերի ընդմիջումները: Դուք կարող եք նաև օգտագործել int fscanf (FILE * fp, const char * ձևաչափ,...) ֆունկցիան ֆայլից տողը կարդալու համար, բայց այն դադարում է կարդալ, երբ հանդիպում է առաջին բացատին և տողերի ընդմիջմանը:
կենդանի օրինակ
#ներառել
Երբ վերը նշված կոդը կազմվում և կատարվում է, այն կարդում է նախորդ բաժնում ստեղծված ֆայլերը՝ ստանալով հետևյալ արդյունքները.
1: Այս 2-ը փորձարկում է fprintf-ի համար...
3: Սա փորձարկում է fputs-ի համար...
Նախ, fscanf() մեթոդը կարդում է միայն This .քանի որ հետևի մասում հանդիպում է բացատ: Երկրորդ, զանգահարեք fgets () ֆունկցիան՝ կարդալու մնացած մասը մինչև տողի վերջը: Ի վերջո, զանգահարեք fgets ()՝ երկրորդ տողն ամբողջությամբ կարդալու համար:
Երկուական I/O ֆունկցիա
Երկուական մուտքի և ելքի համար օգտագործվում են հետևյալ երկու գործառույթները.
size_t fread (void *ptr, size_t size_of_elements, size_t number_of_elements, FILE *a_file); size_t fwrite (const void *ptr, size_t size_of_elements, size_t_t number_of_elements, FILE *a_file);
Երկու գործառույթներն էլ ընթերցվում և գրվում են պահեստավորման բլոկների համար, սովորաբար զանգվածներ կամ կառուցվածքներ:
C ֆայլի ընթերցման և գրելու մասին վերը պատկանում է HDV Phoelectron Technology Ltd.-ին, որը ծրագրային ապահովման տեխնիկական գործողություն է: Եվ ցանցին առնչվող սարքավորումների (օրինակ՝ ACONU/ հաղորդակցությունONU/ խելացիONU/ մանրաթելONUև այլն) համախմբել է հզոր ծրագրային թիմ, յուրաքանչյուր հաճախորդի համար հարմարեցնելու բացառիկ պահանջները, ովքեր դրա կարիքն ունեն, ինչպես նաև թույլ են տալիս մեր արտադրանքն ավելի խելացի և առաջադեմ: