• Giga@hdv-tech.com
  • 24-uurs onlineservice:
    • 7189078c
    • sns03
    • 6660e33e
    • youtube meer
    • instagram

    C, document lezen en schrijven

    Posttijd: 11 aug. 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 Language, biedt niet alleen toegang tot de functies op het hoogste niveau, maar biedt ook de onderliggende (OS) oproep om bestanden op het opslagapparaat te verwerken .In dit hoofdstuk worden de belangrijke oproepen in documentbeheer toegelicht.

    open bestand

    Gewoonlijk wordt de functie fopen () gebruikt om een ​​nieuw bestand aan te maken of een bestaand bestand te openen. Deze aanroep initialiseert een object van het type FILE dat alle benodigde informatie bevat om de stroom te regelen.Hier is het prototype van deze functieaanroep:

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

    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 een nieuw bestand gemaakt.Hier schrijft uw programma de inhoud vanaf het begin van het bestand.Als het bestand bestaat, wordt het afgekapt tot een lengte van nul en opnieuw geschreven.

    a

    Open een tekstbestand en schrijf naar het bestand in een toevoegmodus.Als het bestand niet bestaat, wordt 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 afgekapt tot een lengte van nul en als het bestand niet bestaat, wordt een nieuw bestand gemaakt.

    a+

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

    Als een binair bestand wordt verwerkt, gebruikt u 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 met succes 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 is gebruikt.EOF is een constante gedefinieerd in het headerbestand stdio.h

    De C-standaardbibliotheek biedt verschillende functies voor het lezen en schrijven van bestanden met tekens of als een reeks met een vaste lengte.

    Schrijf naar het bestand

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

    int fputc (int c, BESTAND *fp);

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

    int fputs (const char *s, FILE *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 van int gebruiken fprintf (FILE * fp, const char * format,...) schrijft een string naar het bestand.Probeer het volgende voorbeeld:

    Opmerking: zorg ervoor dat u een beschikbare tmp-directory hebt en als deze niet bestaat, moet u deze eerst op uw computer maken.

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

    levend voorbeeld

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

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

    Lees het bestand

    Het volgende is de eenvoudigste functie om een ​​enkel teken uit een bestand te lezen:

    int fgetc (BESTAND * fp);

    De functie fgetc () leest een teken uit het invoerbestand waarnaar de fp verwijst.De geretourneerde waarde is het gelezen teken 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, FILE *fp);

    De functie fgets () leest n-1 tekens uit de invoerstroom die wordt aangestuurd door fp.Het kopieert de gelezen string naar de bufferbuf en voegt aan het einde een null-teken toe om de string te beëindigen.

    Als deze functie een onderbroken lijnteken '\ n' tegenkomt of de EOF van het einde van het bestand voordat het laatste teken gelezen wordt, dan 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 betrekkenint main () { BESTAND *fp = NULL;verkoolde buff [255];fp = fopen ("/tmp/test.txt ", "r ");fscanf (fp, "%s", buff);printf ("1: %s \n ", verbeterd);fgets (buff, 255, (BESTAND *)fp);printf ("2: %s \n ", verbeterd);fgets (buff, 255, (BESTAND *)fp);printf ("3: %s \n ", buff );fsluiten (fp);}

    Wanneer de bovenstaande code wordt gecompileerd en uitgevoerd, leest deze de bestanden die in de vorige sectie zijn gemaakt, met de volgende resultaten:

    1: Deze 2: test voor fprintf...

    3: Dit is testen voor fputs...

    Ten eerste leest de methode van fscanf() alleen This .omdat het achterin een spatie tegenkomt.Ten tweede, bel functon fgets () 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 invoer en uitvoer 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 worden gelezen en geschreven voor opslagblokken, meestal arrays of structuren.

    Bovenstaande ongeveer C-bestanden lezen en schrijven behoort toe aan HDV Phoelectron Technology Ltd., een softwaretechnische operatie.En het bedrijf voor netwerkgerelateerde apparatuur (zoals: ACONU/ communicatieONU/ intelligentONU/ vezelONU, enz.) heeft een krachtig softwareteam samengebracht, voor elke klant die de exclusieve eisen aanpast die het nodig hebben, en onze producten ook intelligenter en geavanceerder te maken.



    web