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

    C, Asiakirjan lukeminen ja kirjoittaminen

    Postitusaika: 11.8.2023

    Kuvaa, kuinka C-ohjelmoija luo, avaa ja sulkee tekstitiedoston tai binaaritiedoston.

    Tiedosto tarkoittaa sarjaa tavuja, olipa kyseessä tekstitiedosto tai binääritiedosto, C Language ei ainoastaan ​​tarjoa pääsyä ylimmän tason toimintoihin, vaan tarjoaa myös taustalla olevan (OS) kutsun käsitellä tallennuslaitteessa olevia tiedostoja. . Tässä luvussa selitetään dokumenttienhallinnan tärkeät haasteet.

    avoin tiedosto

    Yleensä fopen () -funktiolla uuden tiedoston luomiseen tai olemassa olevan tiedoston avaamiseen tämä kutsu alustaa TIEDOSTO-tyypin objektin, joka sisältää kaikki kulun ohjaamiseen tarvittavat tiedot. Tässä on tämän funktiokutsun prototyyppi:

    FILE *fopen ( const char * tiedostonimi , const char * tila );

    Tässä tiedostonimi on merkkijono tiedoston nimeämiseksi, käyttötilan arvo voi olla jokin seuraavista arvoista:

    kuvio

    kuvaus

    r

    Avaa olemassa oleva tekstitiedosto, joka sallii sen lukemisen.

    w

    Avaa tekstitiedosto, joka sallii tiedostoon kirjoittamisen. Jos tiedostoa ei ole olemassa, luodaan uusi tiedosto. Täällä ohjelma kirjoittaa sisällön tiedoston alusta. Jos tiedosto on olemassa, se lyhennetään nollaan ja kirjoitetaan uudelleen.

    a

    Avaa tekstitiedosto ja kirjoita tiedostoon liitetilassa. Jos tiedostoa ei ole olemassa, luodaan uusi tiedosto. Täällä ohjelmasi liittää sisällön jo olemassa oleviin tiedostoihin.

    r+

    Avaa tekstitiedosto, jonka avulla voit lukea ja kirjoittaa tiedostoa.

    w+

    Avaa tekstitiedosto, jonka avulla voit lukea ja kirjoittaa tiedostoa. Jos tiedosto on jo olemassa, tiedosto lyhennetään nollaan, ja jos tiedostoa ei ole olemassa, luodaan uusi tiedosto.

    a+

    Avaa tekstitiedosto, jonka avulla voit lukea ja kirjoittaa tiedostoa. Jos tiedostoa ei ole olemassa, luodaan uusi tiedosto. Luku alkaa tiedoston alusta ja kirjoitus on vain liitetilassa.

    Jos käsitelty binääritiedosto, käytä seuraavaa käyttötilaa korvataksesi yllä olevan:

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

    suljettu tiedosto

    Sulje tiedosto käyttämällä fclose()-funktiota. Toiminnon prototyyppi on seuraava:

    int fclose (TIEDOSTO *fp );

    • Jos tiedosto suljetaan onnistuneesti, fclose()-funktio palauttaa nollan ja jos virhe palauttaa EOF:n. Tämä toiminto itse asiassa poistaa tiedot puskurista, sulkee tiedoston ja vapauttaa kaiken kyseiselle tiedostolle käytetyn muistin. EOF on vakio, joka on määritelty otsikkotiedostossa stdio.h

    C-standardikirjasto tarjoaa erilaisia ​​toimintoja tiedostojen lukemiseen ja kirjoittamiseen merkkien mukaan tai kiinteäpituisena merkkijonona.

    Kirjoita tiedostoon

    Tässä ovat yksinkertaisimmat toiminnot merkkien kirjoittamiseksi streamiin:

    int fputc ( int c , TIEDOSTO *fp );

    Funktio fputc () kirjoittaa parametrin c merkkiarvon lähtövirtaan, johon fp osoittaa. Jos kirjoitus onnistuu, se palauttaa kirjoitetun merkin ja virheen sattuessa EOF:n. Voit käyttää seuraavaa funktiota kirjoittaaksesi streamiin nolla-päätteisen merkkijonon:

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

    Funktio fputs () kirjoittaa merkkijonon s lähtövirtaan, johon fp osoittaa. Jos kirjoitus onnistuu, se palauttaa ei-negatiivisen arvon ja EOF:n, jos tapahtuu virhe. Voit myös käyttää toimintoa int fprintf (FILE * fp, const char * muoto,...) kirjoittaa tiedostoon merkkijonon. Kokeile seuraavaa esimerkkiä:

    Huomautus: Varmista, että sinulla on käytettävissä tmp-hakemisto, ja jos sitä ei ole, sinun on ensin luotava se tietokoneellesi.

    /tmp on yleensä väliaikainen hakemisto Linux-järjestelmässä. Jos käytät Windows-järjestelmää, sinun on muutettava se olemassa olevaan hakemistoon paikallisessa ympäristössä, kuten: C: \ tmp, D: \ tmp jne.

    elävä esimerkki

    #sisällytä int main () { TIEDOSTO *fp = NULL ; fp = fopen ("/tmp/test.txt", "w+"); fprintf (fp , "Tämä testataan fprintf:lle...\n"); fputs ("Tämä testaa fputseja...\n ", fp ); fclose (fp ); }

    Kun yllä oleva koodi on käännetty ja suoritettu, se luo uuden tiedoston test.txt /tmp-hakemistoon. Ja kirjoittaa kahdelle riville kahdella eri funktiolla. Luetaanpa tämä tiedosto seuraavaksi.

    Lue tiedosto

    Seuraava on yksinkertaisin toiminto yksittäisen merkin lukemiseksi tiedostosta:

    int fgetc (TIEDOSTO * fp );

    Fgetc () -funktio lukee merkin syöttötiedostosta, johon fp osoittaa. Palautusarvo on luettu merkki ja EOF, jos tapahtuu virhe. Seuraava toiminto mahdollistaa merkkijonon lukemisen streamista:

    char *fgets ( char *buf , int n , TIEDOSTO *fp );

    Funktio fgets () lukee n-1 merkkiä fp:n ohjaamasta syöttövirrasta. Se kopioi lukujonon puskuripuskuriin ja lisää loppuun nollamerkin lopettaakseen merkkijonon.

    Jos tämä toiminto kohtaa katkoviivamerkin \ n tai tiedoston lopun EOF:n ennen viimeisen merkin lukemista, se palaa vain luettuihin merkkeihin, mukaan lukien rivinvaihdot. Voit myös käyttää int fscanf -funktiota (FILE * fp, const char * muoto,...) lukeaksesi merkkijonon tiedostosta, mutta se lopettaa lukemisen, kun kohtaa ensimmäisen välilyönnin ja rivinvaihdon.

    elävä esimerkki

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

    Kun yllä oleva koodi on käännetty ja suoritettu, se lukee edellisessä osiossa luodut tiedostot ja tuottaa seuraavat tulokset:

    1: Tämä 2: testaa fprintf...

    3: Tämä testaa fputseja...

    Ensinnäkin menetelmä fscanf() lukee vain tämän .koska se kohtaa välilyönnin takana. Toiseksi kutsu functon fgets () lukeaksesi jäljellä olevan osan rivin loppuun asti. Lopuksi kutsu fgets () lukeaksesi toinen rivi kokonaan.

    Binääri I / O-toiminto

    Seuraavia kahta toimintoa käytetään binäärituloon ja -lähtöön:

    koko_t fread (void *ptr , koko_t elementtien_koko , koko_t elementtien_määrä , TIEDOSTO *a_tiedosto ); koko_t fwrite (const void *ptr , koko_t elementtien_koko , koko_t elementtien_määrä , TIEDOSTO *a_tiedosto );

    Molemmat toiminnot luetaan ja kirjoitetaan tallennuslohkoille - yleensä taulukoille tai rakenteille.

    Yllä noin C-tiedoston lukeminen ja kirjoittaminen kuuluu HDV Phoelectron Technology Ltd:lle, ohjelmistotekniselle toiminnalle. Ja yritys verkkoon liittyvistä laitteista (kuten: ACONU/ viestintäONU/ älykäsONU/ kuituaONUjne.) on koonnut yhteen tehokkaan ohjelmistotiimin, joka räätälöi jokaiselle asiakkaalle sitä tarvitsevien ainutlaatuisten vaatimuksien sekä antaa tuotteidemme älykkäämpiä ja kehittyneempiä.



    web聊天