In deze gids zullen we leren hoe we invoer / uitvoer (I / O) -bewerkingen op een bestand kunnen uitvoeren met de programmeertaal C.
C File I / O – Inhoudsopgave
1. Een bestand openen
2. Een bestand lezen
3. Een bestand schrijven
4. Een bestand sluiten
5. Tekenreeksen lezen en naar een bestand schrijven
6. Binaire bestanden lezen en schrijven in C
Voordat we elke bewerking in detail bespreken, nemen we een eenvoudig C-programma:
Een eenvoudig C-programma om het bestand te openen, lezen en sluiten
In het bovenstaande programma openen we een bestand newfile.txt
in de modus r
, waarbij we de inhoud van het bestand lezen en weergeven het op de console. laten we elke bewerking in detail begrijpen:
Een bestand openen
fopen()
functie wordt gebruikt voor het openen van een bestand.
Syntaxis:
FILE pointer_name = fopen ("file_name", "Mode");
pointer_name
kan alles zijn van uw keuze.
file_name
is de naam van het bestand dat u wilt openen. Specificeer hier het volledige pad zoals “C: \\ mijnbestanden \\ nieuwbestand.txt”.
Tijdens het openen van een bestand, moet je de modus specificeren. De modus die we gebruiken om een bestand te lezen is “r ”Wat de” alleen-lezen modus “is.
bijvoorbeeld:
FILE *fp;fp = fopen("C:\\myfiles\\newfile.txt", "r");
Het adres van het eerste teken wordt opgeslagen in pointer fp
.
Hoe te controleren of het bestand met succes is geopend?
Als het bestand niet met succes wordt geopend, krijgt de pointer een NULL-waarde toegewezen, zodat u de logica als volgt kunt schrijven :
Deze code controleert of het bestand met succes is geopend of niet. Als het bestand niet wordt geopend, wordt er een foutmelding voor de gebruiker weergegeven.
..FILE fpr;fpr = fopen("C:\\myfiles\\newfile.txt", "r");if (fpr == NULL){ puts("Error while opening file"); exit();}
Verschillende modi voor het openen van bestanden:
Het bestand wordt geopend met de functie fopen()
, tijdens het openen kunt u elk van de volgende modi gebruiken volgens de vereisten.
Mode “r”: Het is een alleen-lezen modus, wat betekent dat als het bestand wordt geopend in de r-modus, het je niet toestaat om de inhoud ervan te schrijven en te wijzigen. Wanneer fopen()
een bestand met succes opent, retourneert het het adres van het eerste teken van het bestand, anders wordt NULL geretourneerd.
Modus “w”: Het is een schrijven only mode. De functie fopen()
maakt een nieuw bestand aan als het opgegeven bestand niet bestaat en als het bestand niet kan worden geopend, wordt NULL geretourneerd.
Mode ” a ”: Met deze modus kan inhoud worden toegevoegd aan het einde van een bestaand bestand. Net als Mode “w”, fopen()
maakt een nieuw bestand aan als het bestand niet bestaat. Bij mislukt openen retourneert het NULL.
File Pointer wijst naar: laatste teken van het bestand .
Modus “r +”: deze modus is hetzelfde als modus “r”; u kunt echter verschillende bewerkingen uitvoeren op het bestand dat in deze modus wordt geopend. U mag de inhoud van het bestand lezen, schrijven en wijzigen geopend in “r +” -modus.
File Pointer verwijst naar: Eerste teken van het bestand.
Modus “w +”: Zelfde als modus “w” behalve bewerkingen die kunnen worden uitgevoerd; het bestand kan in deze modus worden gelezen, geschreven en gewijzigd.
Modus “a +”: Hetzelfde als modus “a”; u kunt de gegevens in het bestand lezen en toevoegen, maar inhoudswijziging is niet toegestaan in deze modus.
Een bestand lezen
Om het bestand te lezen, moeten we het eerst openen met van de modus, bijvoorbeeld als u alleen het bestand wilt lezen, open het dan in “r” -modus. Op basis van de modus die is geselecteerd tijdens het openen van het bestand, mogen we bepaalde bewerkingen op het bestand uitvoeren.
C Programma om een bestand te lezen
fgetc (): Deze functie leest het karakter vanaf de huidige pointerpositie en bij succesvol lezen verplaatst de pointer naar het volgende karakter in het bestand. Zodra de pointers het einde van het bestand bereiken , deze functie retourneert EOF (End of File). We hebben EOF in ons programma gebruikt om het einde van het bestand te bepalen.
Schrijven naar een bestand
Om het bestand te schrijven, moet het bestand openen in een modus die schrijven ondersteunt. Als u bijvoorbeeld een bestand opent in de modus “r”, kunt u het bestand niet schrijven omdat “r” de modus alleen lezen is waarin alleen lezen mogelijk is.
Voorbeeld: C Programma om te schrijven het bestand
Dit programma vraagt de gebruiker om een teken in te voeren en schrijft dat teken aan het einde van het bestand. Als het bestand niet bestaat, maakt dit programma een bestand met de opgegeven naam en schrijft het het invoerteken in het bestand.
Een bestand sluiten
fclose(fp);
De functie fclose () wordt gebruikt om een geopend bestand te sluiten. Als argument moet je een pointer geven naar het bestand dat je wilt sluiten.
Een voorbeeld om de open-, lees-, schrijf- en sluitoperatie in C te tonen
Hoe te lezen / schrijven (I / O) Strings in Files – fgets & fputs
Hier zullen we bespreken hoe strings te lezen en in een bestand te schrijven.
char *fgets(char *s, int rec_len, FILE *fpr)
s: Array van tekens om strings op te slaan.
rec_len: Lengte van het invoerrecord.
fpr: Pointer naar het invoerbestand.
Laten we een voorbeeld nemen:
Voorbeeld om de strings uit een bestand te lezen in C-programmering
In het bovenstaande voorbeeld hebben we de fgets-functie als volgt gebruikt:
fgets(str, 10, fpr)
Hier staat str voor de string (array van char) waarin u de string opslaat nadat u deze uit een bestand hebt gelezen.
10 is de lengte van de string die moet elke keer worden gelezen.
fpr is pointer naar bestand, dat zal worden gelezen.
Waarom ik if (fgets (str, 10, fpr) == NULL als een logica om het einde te bepalen van het bestand?
In de bovenstaande voorbeelden hebben we ch == EOF gebruikt om het einde van het bestand te leren kennen. Hier hebben we deze logica gebruikt omdat fgets NULL retourneert als er geen records meer beschikbaar zijn om te lezen .
C-programma – string naar een bestand schrijven
int fputs ( const char * s, FILE * fpw );
char *s
– Array van char.
FILE *fpw
– Pointer (van het FILE-type) naar het bestand, dat geschreven gaat worden.
fputs heeft twee argumenten –
fputs(str, fpw)
str – str staat voor de array waarin de string is opgeslagen.
fpw – FILE pointer naar het output bestand, waarin het record geschreven moet worden.
Een opmerking over fputs:
fputs voegt standaard geen nieuwe regel toe na het schrijven van elk record, om dat handmatig te doen – u kunt de volgende verklaring hebben na elk schrijven naar het bestand.
fputs("\n", fpw);
C FILE I / O voor binaire bestanden
Tot dusver hebben we bestandsbewerkingen op tekstbestanden geleerd, wat als de bestanden binair zijn (zoals .exe-bestanden). De bovenstaande programmas werken niet voor binaire bestanden, maar er is een kleine wijziging in het omgaan met binaire bestanden. Het belangrijkste verschil is de bestandsnaam & -modi. Laten we dit begrijpen met behulp van een voorbeeld. Laten we zeggen dat ik twee binaire bestanden bin1.exe & bin2.exe heb – ik wil de inhoud van bin1.exe naar bin2.exe kopiëren:
Voorbeeld: lezen en het schrijven van binaire bestanden in C
Opmerking: de modus voor het openen van bestanden is “rb” en “wb” in plaats van “r” & “w” ..