C Bestanden I/O: een bestand maken, openen, lezen, schrijven en sluiten

C Bestandsbeheer

Een bestand kan worden gebruikt om een ​​grote hoeveelheid persistente gegevens op te slaan. Net als veel andere talen biedt 'C' de volgende functies voor bestandsbeheer,

  1. Aanmaken van een bestand
  2. Een bestand openen
  3. Een bestand lezen
  4. Schrijven naar een bestand
  5. Een bestand sluiten

Hieronder volgen de belangrijkste bestandsbeheerfuncties die beschikbaar zijn in 'C',

functie doel
foppen () Een bestand maken of een bestaand bestand openen
fsluiten () Een bestand sluiten
fprintf () Een gegevensblok naar een bestand schrijven
fscanf () Een blokgegevens uit een bestand lezen
getc () Leest een enkel teken uit een bestand
putc () Schrijft een enkel teken naar een bestand
getw () Leest een geheel getal uit een bestand
zet () Een geheel getal naar een bestand schrijven
zoek () Stelt de positie van een bestandsaanwijzer in op een gespecificeerde locatie
ftel () Retourneert de huidige positie van een bestandsaanwijzer
terugspoelen () Zet de bestandsaanwijzer aan het begin van een bestand

In deze tutorial leer je-

Hoe maak je een bestand aan

Wanneer u met een bestand wilt werken, is de eerste stap het maken van een bestand. Een bestand is niets anders dan ruimte in een geheugen waar gegevens worden opgeslagen.

Om een ​​bestand in een 'C'-programma aan te maken, wordt de volgende syntaxis gebruikt, |__+_|

In de bovenstaande syntaxis is het bestand een gegevensstructuur die is gedefinieerd in de standaardbibliotheek.

fopen is een standaardfunctie die wordt gebruikt om een ​​bestand te openen.

  • Als het bestand niet op het systeem aanwezig is, wordt het gemaakt en vervolgens geopend.
  • Als er al een bestand op het systeem aanwezig is, wordt het met deze functie direct geopend.

fp is een bestandsaanwijzer die naar het typebestand verwijst.

Telkens wanneer u een bestand opent of aanmaakt, moet u specificeren wat u met het bestand gaat doen. Een bestand in 'C'-programmering kan worden gemaakt of geopend voor lees-/schrijfdoeleinden. Een modus wordt gebruikt om aan te geven of u een bestand wilt openen voor een van de onderstaande doeleinden. Hieronder volgen de verschillende soorten modi in 'C'-programmering die kunnen worden gebruikt tijdens het werken met een bestand.

Bestandsmodus Beschrijving
ROpen een bestand om te lezen. Als een bestand zich in de leesmodus bevindt, worden er geen gegevens verwijderd als een bestand al op een systeem aanwezig is.
inOpen een bestand om te schrijven. Als een bestand in de schrijfmodus staat, wordt er een nieuw bestand gemaakt als een bestand helemaal niet bestaat. Als een bestand al op een systeem aanwezig is, worden alle gegevens in het bestand afgekapt en wordt het geopend voor schrijfdoeleinden.
tot Open een bestand in de toevoegmodus. Als een bestand zich in de toevoegmodus bevindt, wordt het bestand geopend. De inhoud van het bestand verandert niet.
r+ open voor lezen en schrijven vanaf het begin
in +open voor lezen en schrijven, overschrijven van een bestand
een +open voor lezen en schrijven, toevoegen aan bestand

In de gegeven syntaxis worden de bestandsnaam en de modus gespecificeerd als strings, daarom moeten ze altijd tussen dubbele aanhalingstekens staan.

Voorbeeld: |_+_|

Uitgang:

Het bestand wordt gemaakt in dezelfde map waarin u uw code hebt opgeslagen.

U kunt het pad specificeren waar u uw bestand wilt maken |_+_|

Hoe een bestand te sluiten

Men moet altijd een bestand sluiten wanneer de bewerkingen in het bestand voorbij zijn. Het betekent dat de inhoud en links naar het bestand worden beëindigd. Dit voorkomt onbedoelde schade aan het bestand.

'C' biedt de functie fclose om het sluiten van bestanden uit te voeren. De syntaxis van fclose is als volgt, |_+_|

Voorbeeld: |_+_|

De functie fclose neemt een bestandsaanwijzer als argument. Het bestand dat bij de bestandsaanwijzer hoort, wordt dan gesloten met behulp van de fclose-functie. Het geeft 0 terug als het sluiten succesvol was en EOF (einde van het bestand) als er een fout is opgetreden tijdens het sluiten van het bestand.

Na het sluiten van het bestand kan dezelfde bestandsaanwijzer ook met andere bestanden worden gebruikt.

Bij 'C'-programmering worden bestanden automatisch gesloten wanneer het programma wordt beëindigd. Een bestand handmatig sluiten door de fclose-functie te schrijven, is een goede programmeerpraktijk.

Schrijven naar een bestand

Als u in C naar een bestand schrijft, moeten de nieuwe regeltekens ' ' expliciet worden toegevoegd.

De stdio-bibliotheek biedt de nodige functies om naar een bestand te schrijven:

  • fputc(char, file_pointer) : Het schrijft een teken naar het bestand waarnaar wordt verwezen door file_pointer.
  • fputs(str, file_pointer) : Het schrijft een string naar het bestand waarnaar wordt verwezen door file_pointer.
  • fprintf(file_pointer, str, variabele_lijsten) : Het drukt een string af naar het bestand waarnaar wordt verwezen door file_pointer. De tekenreeks kan optioneel opmaakspecificaties en een lijst met variabelen variabele_lijsten bevatten.

Het onderstaande programma laat zien hoe u naar een bestand schrijft:

fputc() Functie:

FILE *fp; fp = fopen ('file_name', 'mode'); 

Uitgang:

Het bovenstaande programma schrijft een enkel teken in de fputc_test.txt bestand totdat het het volgende regelsymbool ' ' bereikt dat aangeeft dat de zin met succes is geschreven. Het proces is om elk teken van de array te nemen en in het bestand te schrijven.

  1. In het bovenstaande programma hebben we een bestand met de naam fputc_test.txt in een schrijfmodus gemaakt en geopend en onze tekenreeks aangegeven die in het bestand zal worden geschreven.
  2. We voeren een teken-voor-teken-schrijfbewerking uit met behulp van de for-lus en plaatsen elk teken in ons bestand totdat het ' '-teken wordt aangetroffen, waarna het bestand wordt gesloten met behulp van de fclose-functie.

fputs () Functie:

#include int main() { FILE *fp; fp = fopen ('data.txt', 'w'); } 

UITGANG:

  1. In het bovenstaande programma hebben we een bestand met de naam fputs_test.txt in een schrijfmodus gemaakt en geopend.
  2. Nadat we een schrijfbewerking hebben uitgevoerd met de functie fputs() door drie verschillende tekenreeksen te schrijven
  3. Vervolgens wordt het bestand gesloten met de functie fclose.

fprintf()Functie:

#include int main() { FILE *fp; fp = fopen ('D://data.txt', 'w'); }

UITGANG:

  1. In het bovenstaande programma hebben we een bestand gemaakt en geopend met de naam fprintf_test.txt in een schrijfmodus.
  2. Nadat een schrijfbewerking is uitgevoerd met de functie fprintf() door een tekenreeks te schrijven, wordt het bestand gesloten met de functie fclose.

Gegevens uit een bestand lezen

Er zijn drie verschillende functies voor het lezen van gegevens uit een bestand

  • fgetc(file_pointer): Het retourneert het volgende teken uit het bestand waarnaar wordt verwezen door de bestandsaanwijzer. Wanneer het einde van het bestand is bereikt, wordt de EOF teruggestuurd.
  • fgets(buffer, n, file_pointer): Het leest n-1 tekens uit het bestand en slaat de tekenreeks op in een buffer waarin het NULL-teken '' als laatste teken wordt toegevoegd.
  • fscanf(file_pointer, conversie_specificaties, variabele_adressen) : Het wordt gebruikt om gegevens te ontleden en te analyseren. Het leest karakters uit het bestand en wijst de invoer toe aan een lijst met variabele pointers variabele_adressen met behulp van conversiespecificaties. Houd er rekening mee dat, net als bij scanf, fscanf stopt met het lezen van een tekenreeks wanneer een spatie of nieuwe regel wordt aangetroffen.

Het volgende programma demonstreert het lezen van het fputs_test.txt-bestand met respectievelijk de functies fgets(),fscanf() en fgetc() : |_+_|

Resultaat:

fclose (file_pointer); 

  1. In het bovenstaande programma hebben we het bestand met de naam 'fprintf_test.txt' geopend dat eerder was geschreven met de functie fprintf() en het bevat de tekenreeks 'Learning C with Guru99'. We lezen het met de functie fgets() die regel voor regel leest, waarbij de buffergrootte voldoende moet zijn om de hele regel te verwerken.
  2. We openen het bestand opnieuw om de pointerfile opnieuw in te stellen naar het begin van het bestand. Maak verschillende stringvariabelen om elk woord afzonderlijk te verwerken. Druk de variabelen af ​​om hun inhoud te zien. De fscanf() wordt voornamelijk gebruikt om gegevens uit een bestand te extraheren en te ontleden.
  3. Open het bestand opnieuw om de pointerfile opnieuw in te stellen naar het begin van het bestand. Lees gegevens en print ze uit het bestand teken voor teken met de functie getc() totdat de EOF-instructie wordt aangetroffen
  4. Na het uitvoeren van een leesbewerkingsbestand met verschillende varianten, hebben we het bestand opnieuw gesloten met behulp van de fclose-functie.

Interactief bestand lezen en schrijven met getc en putc

Dit zijn de eenvoudigste bestandsbewerkingen. Getc staat voor get character, en putc staat voor put character. Deze twee functies worden gebruikt om slechts één teken tegelijk te verwerken.

Het volgende programma demonstreert de bestandsverwerkingsfuncties in 'C'-programmering: |_+_|

Uitgang:

  1. In het bovenstaande programma hebben we een bestand met de naam demo gemaakt en geopend in een schrijfmodus.
  2. Nadat een schrijfbewerking is uitgevoerd, wordt het bestand gesloten met de functie fclose.
  3. We hebben weer een bestand geopend dat nu gegevens in leesmodus bevat. Een while-lus wordt uitgevoerd totdat de eof is gevonden. Zodra het einde van het bestand is gevonden, wordt de bewerking beëindigd en worden de gegevens weergegeven met behulp van de printf-functie.
  4. Na het uitvoeren van een leesbewerking wordt het bestand weer gesloten met behulp van de fclose-functie.

Samenvatting

  • Een bestand is een ruimte in een geheugen waar gegevens worden opgeslagen.
  • 'C'-programmering biedt verschillende functies om met een bestand om te gaan.
  • Een mechanisme om met de bestanden te manipuleren wordt bestandsbeheer genoemd.
  • Een bestand moet worden geopend voordat er bewerkingen op worden uitgevoerd.
  • Een bestand kan worden geopend in een lees-, schrijf- of toevoegmodus.
  • Getc- en putc-functies worden gebruikt om een ​​enkel teken te lezen en te schrijven.
  • De functie fscanf() staat toe om gegevens uit een bestand te lezen en te ontleden
  • We kunnen lezen (met behulp van de getc functie) een heel bestand door een lus te maken om het hele bestand te bedekken totdat de EOF wordt aangetroffen
  • We kunnen naar een bestand schrijven nadat we de naam ervan hebben gemaakt, met behulp van de functie fprintf() en het moet het newline-teken aan het einde van de tekenreekstekst hebben.