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

    C, dokumentlees en skryf

    Postyd: Aug-11-2023

    Beskryf hoe die C-programmeerder 'n tekslêer of 'n binêre lêer skep, oopmaak en toemaak.

    'n Lêer, beteken 'n reeks grepe, of dit nou 'n tekslêer of 'n binêre lêer is, C Language, bied nie net toegang tot die boonste vlakfunksies nie, maar verskaf ook die onderliggende (OS) oproep om lêers op die stoortoestel te verwerk . Hierdie hoofstuk sal die belangrike oproepe in dokumentbestuur verduidelik.

    oop-lêer

    Gewoonlik deur die fopen () funksie te gebruik om 'n nuwe lêer te skep of 'n bestaande lêer oop te maak, initialiseer hierdie oproep 'n objek van die tipe FILE wat al die nodige inligting bevat om die vloei te beheer. Hier is die prototipe van hierdie funksie-oproep:

    LêER *fopen (const char * lêernaam, const char * mode);

    Hier is lêernaam 'n string om 'n lêer te noem, die waarde van die toegangsmodus kan een van die volgende waardes wees:

    patroon

    beskrywing

    r

    Maak 'n bestaande tekslêer oop waarmee dit gelees kan word.

    w

    Maak 'n tekslêer oop wat dit moontlik maak om na die lêer te skryf. As die lêer nie bestaan ​​nie, word 'n nuwe lêer geskep. Hier skryf jou program die inhoud vanaf die begin van die lêer. As die lêer bestaan, sal dit afgekap word tot nul lengte en herskryf word.

    a

    Maak 'n tekslêer oop en skryf na die lêer in 'n byvoegmodus. As die lêer nie bestaan ​​nie, word 'n nuwe lêer geskep. Hier voeg jou program inhoud by die lêers wat jy reeds het.

    r+

    Maak 'n tekslêer oop waarmee jy die lêer kan lees en skryf.

    w+

    Maak 'n tekslêer oop waarmee jy die lêer kan lees en skryf. As die lêer reeds bestaan, word die lêer afgekap tot nul lengte, en as die lêer nie bestaan ​​nie, word 'n nuwe lêer geskep.

    a+

    Maak 'n tekslêer oop waarmee jy die lêer kan lees en skryf. As die lêer nie bestaan ​​nie, word 'n nuwe lêer geskep. Die lees begin aan die begin van die lêer, en die skryf is slegs in byvoegmodus.

    As binêre lêer verwerk word, gebruik die volgende toegangsmodus om bogenoemde te vervang:

    "rb", "wb", "ab", "rb+", "r+b", "wb+", "w+b", "ab+", "a+b"

    geslote lêer

    Om die lêer toe te maak, gebruik asseblief die fclose() funksie. Die prototipe van die funksie is soos volg:

    int fclose (LêER *fp);

    • As die lêer suksesvol gesluit is, gee die fclose() funksie nul terug, en as die fout EOF terugstuur. Hierdie funksie verwyder in werklikheid die data uit die buffer, maak die lêer toe en stel al die geheue vry wat vir daardie lêer gebruik word. EOF is 'n konstante gedefinieer in die koplêer stdio.h

    Die C-standaardbiblioteek bied verskeie funksies om lêers volgens karakters of as 'n vaste-lengte string te lees en te skryf.

    Skryf na die lêer

    Hier is die eenvoudigste funksies om karakters in die stroom te skryf:

    int fputc (int c, LêER *fp);

    Die funksie fputc () skryf die karakterwaarde van die parameter c in die uitsetstroom waarna die fp wys. As die skryfwerk suksesvol is, gee dit die geskrewe karakter en die EOF terug as 'n fout voorkom. Jy kan die volgende funksie gebruik om 'n string wat eindig met 'n nul na die stroom te skryf:

    int fputs (const char *s, FILE *fp);

    Die funksie fputs () skryf die string s na die uitsetstroom waarna die fp wys. As die skryfwerk slaag, gee dit 'n nie-negatiewe waarde en die EOF terug as 'n fout voorkom. Jy kan ook die funksie gebruik van int fprintf (FILE * fp, const char * format,...) skryf 'n string na die lêer. Probeer die volgende voorbeeld:

    Let wel: Maak seker dat jy 'n beskikbare tmp-gids het, en as dit nie bestaan ​​nie, moet jy dit eers op jou rekenaar skep.

    / tmp is gewoonlik 'n tydelike gids op die Linux-stelsel. As jy op die Windows-stelsel werk, moet jy dit verander na 'n bestaande gids in die plaaslike omgewing, soos: C: \ tmp, D: \ tmp, ens.

    lewende voorbeeld

    #sluit in int main () { FILE *fp = NULL; fp = fopen ("/tmp/test.txt ", "w+"); fprintf (fp , "Dit toets vir fprintf...\n "); fputs ("Dit toets vir fputte...\n ", fp ); fclose (fp ); }

    Wanneer die bogenoemde kode saamgestel en uitgevoer word, skep dit 'n nuwe lêer test.txt in die / tmp gids. En skryf na twee reëls deur twee verskillende funksies te gebruik. Kom ons lees hierdie lêer volgende.

    Lees die lêer

    Die volgende is die eenvoudigste funksie om 'n enkele karakter uit 'n lêer te lees:

    int fgetc ( FILE * fp );

    Die fgetc () funksie lees 'n karakter uit die invoerlêer waarna die fp wys. Die terugkeerwaarde is die leeskarakter en die EOF as 'n fout voorkom. Die volgende funksie laat jou toe om 'n string uit 'n stroom te lees:

    char *fgets (char *buf, int n, LêER *fp);

    Die funksie fgets () lees n-1 karakters uit die invoerstroom wat deur fp gerig word. Dit kopieer die leesstring na die bufferbuffer en voeg 'n nulkarakter aan die einde by om die string te beëindig.

    As hierdie funksie 'n gebroke lynkarakter '\ n' of die EOF van die einde van lêer teëkom voordat die laaste karakter gelees word, word slegs teruggekeer na die gelees karakters, insluitend reëlbreuke. Jy kan ook die int fscanf (FILE * fp, const char * format,...) funksie gebruik om die string van die lêer te lees, maar dit hou op lees wanneer dit die eerste spasie en reëlbreuk teëkom.

    lewende voorbeeld

    #sluit in int main () { FILE *fp = NULL; char dofgeel [255]; fp = fopen ("/tmp/test.txt ", "r "); fscanf (fp, "%s", dofgeel); printf ("1: %s \n ", dofgeel); fgets (buff , 255, (FILE *)fp ); printf ("2: %s \n ", dofgeel); fgets (buff , 255, (FILE *)fp ); printf ("3: %s \n ", dofgeel); fclose (fp ); }

    Wanneer die bogenoemde kode saamgestel en uitgevoer word, lees dit die lêers wat in die vorige afdeling geskep is, wat die volgende resultate lewer:

    1: Hierdie 2: toets vir fprintf...

    3: Dit toets vir fputs...

    Eerstens, die metode van fscanf() lees slegs This .omdat dit 'n spasie agterin teëkom. Tweedens, roep functon fgets () om die oorblywende deel tot aan die einde van die reël te lees. Laastens, roep fgets () om die tweede ry heeltemal te lees.

    Binêre I / O funksie

    Die volgende twee funksies word vir die binêre invoer en afvoer gebruik:

    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 );

    Beide funksies word gelees en geskryf vir stoorblokke - gewoonlik skikkings of strukture.

    Bo oor C lêer lees en skryf behoort aan HDV Phoelectron Technology Ltd., 'n sagteware tegniese operasie. En die maatskappy vir netwerkverwante toerusting (soos: ACONU/ kommunikasieONU/ intelligentONU/ veselONU, ens.) het saam 'n kragtige sagteware span, vir elke kliënt pas die eksklusiewe eise wat dit nodig het, ook laat ons produkte meer intelligent en gevorderde.



    web聊天