• Giga@hdv-tech.com
  • Servizz onlajn 24H:
    • 7189078c
    • sns03
    • 6660e33e
    • youtube 拷贝
    • instagram

    C, Qari u Kitba tad-Dokumenti

    Ħin tal-post: Awissu-11-2023

    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 int main () { FILE * fp = NULL ; fp = fopen ("/tmp/test.txt ", "w+"); fprintf (fp , "Dan qed jittestja għal fprintf...\n "); fputs ("Dan huwa ttestjar għal fputs...\n ", fp ); fclose (fp ); }

    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 int main () { FILE * fp = NULL ; char buff [255]; fp = fopen ("/tmp/test.txt ", "r "); fscanf (fp , "%s ", buff ); printf ("1: %s \n ", buff ); fgets (buff , 255, (FILE *)fp ); printf ("2: %s \n ", buff ); fgets (buff , 255, (FILE *)fp ); printf ("3: %s \n ", buff ); fclose (fp ); }

    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.



    web聊天