Jiddeskrivi kif il-programmatur C joħloq, jiftaħ, u jagħlaq fajl ta 'test, jew fajl binarju.
Fajl, ifisser serje ta 'bytes, kemm jekk huwa fajl ta' test jew fajl binarju, Lingwa C, mhux biss jipprovdi aċċess għall-funzjonijiet tal-ogħla livell, iżda jipprovdi wkoll is-sejħa sottostanti (OS) biex tipproċessa fajls fuq l-apparat tal-ħażna. . Dan il-kapitolu se jispjega s-sejħiet importanti fil-ġestjoni tad-dokumenti.
fajl miftuħ
Normalment tuża l-funzjoni fopen () biex toħloq fajl ġdid jew tiftaħ fajl eżistenti, din is-sejħa tibda oġġett tat-tip FILE li fih l-informazzjoni kollha meħtieġa biex tikkontrolla l-fluss. Hawn hu l-prototip ta' din is-sejħa tal-funzjoni:
FILE *fopen ( const char * filename , const char * mode );
Hawnhekk l-isem tal-fajl huwa string biex issemmi fajl, il-valur tal-mod ta 'aċċess jista' jkun wieħed mill-valuri li ġejjin:
mudell | deskrizzjoni |
r | Iftaħ fajl test eżistenti li jippermetti li jinqara. |
w | Iftaħ fajl test li jippermetti l-kitba fil-fajl. Jekk il-fajl ma jeżistix, jinħoloq fajl ġdid. Hawnhekk, il-programm tiegħek jikteb il-kontenut mill-bidu tal-fajl. Jekk il-fajl jeżisti, ikun maqtugħ għal tul żero u miktub mill-ġdid. |
a | Iftaħ fajl test u ikteb fil-fajl f'modalità tehmeż. Jekk il-fajl ma jeżistix, jinħoloq fajl ġdid. Hawnhekk, il-programm tiegħek jehmeż kontenut mal-fajls li diġà għandek. |
r+ | Iftaħ fajl test li jippermettilek taqra u tikteb il-fajl. |
w+ | Iftaħ fajl test li jippermettilek taqra u tikteb il-fajl. Jekk il-fajl diġà jeżisti, il-fajl huwa maqtugħ għal tul żero, u jekk il-fajl ma jeżistix, jinħoloq fajl ġdid. |
a+ | Iftaħ fajl test li jippermettilek taqra u tikteb il-fajl. Jekk il-fajl ma jeżistix, jinħoloq fajl ġdid. Il-qari jibda fil-bidu tal-fajl, u l-kitba hija biss fil-modalità append. |
Jekk ipproċessat fajl binarju, uża l-mod ta 'aċċess li ġej biex tissostitwixxi dak ta' hawn fuq:
"rb", "wb", "ab", "rb+", "r+b", "wb+", "w+b", "ab+", "a+b"
fajl magħluq
Biex tagħlaq il-fajl, jekk jogħġbok uża l-funzjoni fclose(). Il-prototip tal-funzjoni huwa kif ġej:
int fclose ( FILE * fp );
- Jekk il-fajl jingħalaq b'suċċess, il-funzjoni fclose() tirritorna żero, u jekk l-iżball jirritorna EOF. Din il-funzjoni, fil-fatt, tneħħi d-dejta mill-buffer, tagħlaq il-fajl, u tirrilaxxa l-memorja kollha użata għal dak il-fajl. EOF hija kostanti definita fil-fajl header stdio.h
Il-librerija standard C tipprovdi funzjonijiet varji biex taqra u tikteb fajls b'karattri jew bħala string ta 'tul fiss.
Ikteb fil-fajl
Hawn huma l-aktar funzjonijiet sempliċi biex tikteb karattri fil-fluss:
int fputc ( int c , FILE * fp );
Il-funzjoni fputc () tikteb il-valur tal-karattru tal-parametru c fil-fluss tal-output li l-fp jindika. Jekk il-kitbiet jirnexxu, jirritorna l-karattru bil-miktub u l-EOF jekk iseħħ żball. Tista' tuża l-funzjoni li ġejja biex tikteb string li jispiċċa b'null għan-nixxiegħa:
int fputs ( const char *s , FILE *fp );
Il-funzjoni fputs () tikteb is-sekwenza s fil-fluss tal-output fejn l-fp jindika. Jekk il-kitbiet jirnexxu, jirritorna valur mhux negattiv u l-EOF jekk iseħħ żball. Tista 'wkoll tuża l-funzjoni ta' int fprintf (FILE * fp, const char * format,...) jikteb string fil-fajl. Ipprova l-eżempju li ġej:
Nota: Kun żgur li għandek direttorju tmp disponibbli, u jekk ma jeżistix, l-ewwel trid toħloqha fuq il-kompjuter tiegħek.
/ tmp normalment huwa direttorju temporanju fuq is-sistema Linux. Jekk taħdem fuq is-sistema Windows, għandek bżonn timmodifikaha għal direttorju eżistenti fl-ambjent lokali, bħal: C: \ tmp, D: \ tmp, eċċ.
eżempju ħaj
#inkludi
Meta l-kodiċi ta 'hawn fuq jiġi kkompilat u esegwit, joħloq fajl ġdid test.txt fid-direttorju / tmp. U jikteb f'żewġ linji billi juża żewġ funzjonijiet differenti. Ejja naqraw dan il-fajl li jmiss.
Aqra l-fajl
Din li ġejja hija l-aktar funzjoni sempliċi biex taqra karattru wieħed minn fajl:
int fgetc ( FILE * fp );
Il-funzjoni fgetc () taqra karattru mill-fajl tal-input li lejh jindika l-fp. Il-valur tar-ritorn huwa l-karattru moqri u l-EOF jekk iseħħ żball. Il-funzjoni li ġejja tippermettilek taqra string minn fluss:
char *fgets ( char *buf , int n , FILE *fp );
Il-funzjoni fgets () taqra n-1 karattri mill-fluss tad-dħul dirett minn fp. Tikkopja s-sekwenza tal-qari mal-buffer buf u twaħħal karattru null fl-aħħar biex ittemm is-sekwenza.
Jekk din il-funzjoni tiltaqa' ma' karattru ta' linja miksura '\ n' jew l-EOF tat-tmiem tal-fajl qabel ma taqra l-aħħar karattru, imbagħad terġa' lura għall-karattri moqrija, inklużi l-qtugħ tal-linja. Tista 'wkoll tuża l-funzjoni int fscanf (FILE * fp, const char * format,...) biex taqra s-sekwenza mill-fajl, iżda tieqaf taqra meta tiltaqa' mal-ewwel spazju u waqfa tal-linja.
eżempju ħaj
#inkludi
Meta l-kodiċi ta 'hawn fuq jiġi kkompilat u esegwit, jaqra l-fajls maħluqa fit-taqsima preċedenti, u jipproduċi r-riżultati li ġejjin:
1: Dan 2: qed jittestja għal fprintf...
3: Dan huwa ttestjar għall-fputs...
L-ewwel, il-metodu ta 'fscanf() jaqra biss Dan .għax jiltaqa' ma 'spazju fuq wara. It-tieni, sejħa functon fgets () biex taqra l-parti li jifdal sa l-aħħar tal-linja. Fl-aħħarnett, sejħa fgets () biex taqra t-tieni ringiela kompletament.
Funzjoni I/O binarja
Iż-żewġ funzjonijiet li ġejjin jintużaw għall-input u l-output binarju:
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 number_of_elements , FILE *a_file );
Iż-żewġ funzjonijiet jinqraw u jiktbu għall-blokki tal-ħażna - normalment arrays jew strutturi.
Hawn fuq dwar il-qari u l-kitba tal-fajl C jappartjeni għal HDV Phoelectron Technology Ltd., operazzjoni teknika ta 'softwer. U l-kumpanija għal tagħmir relatat man-netwerk (bħal: ACONU/ komunikazzjoniONU/ intelliġentiONU/ fibraONU, eċċ.) ġabar flimkien tim ta 'softwer b'saħħtu, għal kull klijent jippersonalizza t-talbiet esklussivi li jeħtieġuha, ħalli wkoll il-prodotti tagħna aktar intelliġenti u avvanzati.