• Giga@hdv-tech.com
  • 24 uur onlineservice:
    • 7189078c
    • sns03
    • 6660e33e
    • youtube 拷贝
    • Instagram

    C, Documenten lezen en schrijven

    Posttijd: 11 augustus 2023

    Beschrijft hoe de C-programmeur een tekstbestand of een binair bestand maakt, opent en sluit.

    Een bestand betekent een reeks bytes, of het nu een tekstbestand of een binair bestand is, C-taal biedt niet alleen toegang tot de functies op het hoogste niveau, maar biedt ook de onderliggende (OS) aanroep om bestanden op het opslagapparaat te verwerken . In dit hoofdstuk worden de belangrijke oproepen in documentbeheer toegelicht.

    open-bestand

    Meestal wordt met behulp van de functie fopen () een nieuw bestand gemaakt of een bestaand bestand geopend. Deze aanroep initialiseert een object van het type FILE dat alle benodigde informatie bevat om de stroom te besturen. Hier is het prototype van deze functieaanroep:

    BESTAND *fopen ( const char * bestandsnaam , const char * modus );

    Hier is bestandsnaam een ​​tekenreeks om een ​​bestand een naam te geven. De waarde van de toegangsmodus kan een van de volgende waarden zijn:

    patroon

    beschrijving

    r

    Open een bestaand tekstbestand waarmee het kan worden gelezen.

    w

    Open een tekstbestand waarmee naar het bestand kan worden geschreven. Als het bestand niet bestaat, wordt er een nieuw bestand gemaakt. Hier schrijft uw programma de inhoud vanaf het begin van het bestand. Als het bestand bestaat, wordt het ingekort tot nul en opnieuw geschreven.

    a

    Open een tekstbestand en schrijf naar het bestand in de toevoegmodus. Als het bestand niet bestaat, wordt er een nieuw bestand gemaakt. Hier voegt uw programma inhoud toe aan de bestanden die u al heeft.

    r+

    Open een tekstbestand waarmee u het bestand kunt lezen en schrijven.

    w+

    Open een tekstbestand waarmee u het bestand kunt lezen en schrijven. Als het bestand al bestaat, wordt het bestand ingekort tot een lengte van nul, en als het bestand niet bestaat, wordt er een nieuw bestand gemaakt.

    a+

    Open een tekstbestand waarmee u het bestand kunt lezen en schrijven. Als het bestand niet bestaat, wordt er een nieuw bestand gemaakt. Het lezen begint aan het begin van het bestand en het schrijven vindt alleen plaats in de toevoegmodus.

    Indien een binair bestand wordt verwerkt, gebruik dan de volgende toegangsmodus om het bovenstaande te vervangen:

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

    gesloten dossier

    Gebruik de functie fclose() om het bestand te sluiten. Het prototype van de functie is als volgt:

    int fclose (BESTAND *fp);

    • Als het bestand succesvol is gesloten, retourneert de functie fclose() nul, en als de fout EOF retourneert. Deze functie verwijdert in feite de gegevens uit de buffer, sluit het bestand en maakt al het geheugen vrij dat voor dat bestand wordt gebruikt. EOF is een constante die is gedefinieerd in het headerbestand stdio.h

    De standaard C-bibliotheek biedt verschillende functies om bestanden te lezen en te schrijven op basis van tekens of als een tekenreeks met een vaste lengte.

    Schrijf naar het bestand

    Hier zijn de eenvoudigste functies om tekens naar de stream te schrijven:

    int fputc (int c, BESTAND *fp);

    De functie fputc () schrijft de tekenwaarde van parameter c naar de uitvoerstroom waarnaar de fp verwijst. Als het schrijven succesvol is, retourneert het het geschreven teken en de EOF als er een fout optreedt. U kunt de volgende functie gebruiken om een ​​tekenreeks die eindigt op een nul naar de stream te schrijven:

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

    De functie fputs () schrijft de string s naar de uitvoerstroom waar de fp naar verwijst. Als het schrijven slaagt, retourneert het een niet-negatieve waarde en de EOF als er een fout optreedt. Je kunt ook de functie int fprintf (FILE * fp, const char * format,...) gebruiken en een string naar het bestand schrijven. Probeer het volgende voorbeeld:

    Opmerking: Zorg ervoor dat u een beschikbare tmp-map heeft en als deze niet bestaat, moet u deze eerst op uw computer aanmaken.

    /tmp is meestal een tijdelijke map op het Linux-systeem. Als u op het Windows-systeem draait, moet u het wijzigen naar een bestaande map in de lokale omgeving, zoals: C: \ tmp, D: \ tmp, enz.

    levend voorbeeld

    #erbij betrekken int main () {BESTAND *fp = NULL; fp = fopen ("/tmp/test.txt", "w+"); fprintf (fp , "Dit is een test voor fprintf...\n "); fputs ("Dit is een test voor fputs...\n ", fp); fsluiten (fp); }

    Wanneer de bovenstaande code wordt gecompileerd en uitgevoerd, wordt er een nieuw bestand test.txt aangemaakt in de map /tmp. En schrijft naar twee regels met twee verschillende functies. Laten we dit bestand vervolgens lezen.

    Lees het bestand

    Het volgende is de eenvoudigste functie om één teken uit een bestand te lezen:

    int fgetc (BESTAND * fp);

    De functie fgetc() leest een teken uit het invoerbestand waarnaar de fp verwijst. De retourwaarde is het leesteken en de EOF als er een fout optreedt. Met de volgende functie kunt u een string uit een stream lezen:

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

    De functie fgets () leest n-1 tekens uit de invoerstroom aangestuurd door fp. Het kopieert de leesreeks naar de bufferbuf en voegt aan het einde een nulteken toe om de reeks te beëindigen.

    Als deze functie een onderbroken regelteken '\ n' tegenkomt of de EOF van het einde van het bestand voordat het laatste teken wordt gelezen, wordt alleen teruggekeerd naar de gelezen tekens, inclusief regeleinden. U kunt ook de functie int fscanf (FILE * fp, const char * format,...) gebruiken om de tekenreeks uit het bestand te lezen, maar deze stopt met lezen wanneer u de eerste spatie en regeleinde tegenkomt.

    levend voorbeeld

    #erbij betrekken int main () {BESTAND *fp = NULL; karakterverbetering [255]; fp = fopen ("/tmp/test.txt", "r "); fscanf (fp, "%s", buff); printf ("1: %s \n ", buff); fgets (buff, 255, (BESTAND *)fp); printf ("2: %s \n ", buff); fgets (buff, 255, (BESTAND *)fp); printf ("3: %s \n ", buff); fsluiten (fp); }

    Wanneer de bovenstaande code wordt gecompileerd en uitgevoerd, worden de bestanden gelezen die in de vorige sectie zijn gemaakt, wat de volgende resultaten oplevert:

    1: Deze 2: test voor fprintf...

    3: Dit is een test voor fputs...

    Ten eerste leest de methode van fscanf() alleen This .omdat er achterin een spatie voorkomt. Ten tweede, roep functon fgets () aan om het resterende deel tot het einde van de regel te lezen. Roep ten slotte fgets () aan om de tweede rij volledig te lezen.

    Binaire I/O-functie

    Voor de binaire in- en uitgang worden de volgende twee functies gebruikt:

    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 functies zijn lezen en schrijven voor opslagblokken, meestal arrays of structuren.

    Het bovenstaande over het lezen en schrijven van C-bestanden is eigendom van HDV Phoelectron Technology Ltd., een softwaretechnische onderneming. En het bedrijf voor netwerkgerelateerde apparatuur (zoals: ACONU/ communicatieONU/ intelligentONU/ vezelONU, enz.) heeft een krachtig softwareteam samengebracht, zodat elke klant de exclusieve eisen kan aanpassen die het nodig hebben, en onze producten ook intelligenter en geavanceerder kunnen maken.



    web聊天