Hoe een tekstbestand te lezen en alle tekenreeksen in C af te drukken

Hoe Een Tekstbestand Te Lezen En Alle Tekenreeksen In C Af Te Drukken



Een tekstbestand lezen en alles afdrukken snaren is een sleuteltaak die vaak wordt uitgevoerd door C-programmeurs. Het is belangrijk om de basisprincipes ervan te begrijpen lezing A tekstbestand in C en hoe afdrukken de snaren voordat u deze taak uitvoert.

Het lezen van een tekstbestand en het afdrukken van alle strings die het bevat, wordt in dit artikel gedemonstreerd met behulp van C-programmering.







Lees een tekstbestand en print alle strings in C

Er zijn vier functies om een ​​tekstbestand te lezen en alle strings in C af te drukken, die als volgt zijn:



Methode 1: fread() Functie

Gegevens zijn uit het bestand lezen en opgeslagen in een buffer met behulp van de C-functie bang() . Om elementen in een arraybuffer te tellen, moet de bang() methode leest uit de invoerstroom die wordt geleverd als de functieparameter. Terwijl elke tekenfunctie leest, gaat de bestandspositie-indicator voor de opgegeven invoerstroom vooruit.



De bang() methode in C heeft de syntaxis.





size_t vrees ( leegte * array_buffer, grootte_t maat , size_t count, BESTAND * Bestandsstroom )

Laten we de fread() functieparameters in meer detail bekijken:



array-buffer: Gegevens worden tijdelijk bewaard in de buffer van een computer, een geheugenruimte. Dit argument is een verwijzing naar de plaats in het geheugen van de buffer die de gegevens zal bevatten lezen uit de invoerstroom.

maat: Dit argument instrueert de functie van hoeveel bytes aan gegevens voor elk blok uit de invoerstroom zullen worden gelezen.

graaf: Het geeft aan hoeveel tekens uit de gegevensinvoerstroom worden gelezen.

Bestandsstroom: Het is een aanwijzer die verwijst naar een FILE-object.

#include
#include
int hoofd ( ) {
BESTAND * bestand ;
char-buffer [ 100 ] ;
bestand = fopen ( 'C_File.txt' , 'R' ) ;
als ( bestand == NUL ) {
printf ( 'Fout: kan bestand niet openen \N ' ) ;
opbrengst 1 ;
}
int graaf = bang ( & buffer, grootte van ( char ) , 100 , bestand ) ;
fsluiten ( bestand ) ;
printf ( 'Gegevens gelezen uit bestand is: %s \N ' , bufferen ) ;
printf ( 'Aantal gelezen elementen: %d' , graaf ) ;
fsluiten ( bestand ) ;
opbrengst 0 ;
}

In dit voorbeeld definiëren we een karakterarraybuffer van grootte 100 voor gebruik fopen() om het tekstbestand te openen C_File.txt in leesmodus. Met behulp van een if-statement bepalen we of het bestand succesvol is geopend. De volgende stap is om voor te lezen 100 bytes aan gegevens uit het bestand met behulp van bang() . De doelbuffer, in dit geval de bufferarray, is de eerste parameter die wordt gebruikt bang(). Het tweede argument, De grootte van , bepaalt de grootte van elk item dat moet worden gelezen terwijl we in tekens lezen . De derde invoer is de te lezen hoeveelheid, die in dit geval is 100 . De bestandswijzer is de vierde parameter. Als laatste gebruiken we printf() om de uit het bestand gelezen gegevens af te drukken en fsluiten() om het bestand te sluiten. Het uitvoeren van dit programma zou resulteren in resultaten als deze, als C_File.txt :

Uitgang

Methode 2: fgets() Functie

De C-taal fgets() methode leest n karakters uit de stream in de string str. De fgets() methode blijft tekens uit de stream lezen totdat (n-1) Er zijn tekens gelezen, er is een teken voor een nieuwe regel gedetecteerd of het einde van het bestand (EOF) is bereikt.

#include
int hoofd ( ) {
BESTAND * bestand ;
char-buffer [ 100 ] ;
bestand = fopen ( 'C_File.txt' , 'R' ) ;
als ( bestand == NUL ) {
printf ( 'Fout: kan bestand niet openen \N ' ) ;
opbrengst 1 ;
}
terwijl ( fgets ( buffer, 100 , bestand ) ) {
printf ( 'Tekenreeks gelezen uit bestand: %s' , bufferen ) ;
}
fsluiten ( bestand ) ;
opbrengst 0 ;
}

Dit voorbeeld gebruikt fopen() om een ​​tekstbestand met de naam te openen C_File.txt in leesmodus na eerst een karakterarraybuffer van grootte te hebben gedeclareerd 100 . Met behulp van een if-statement bepalen we of het bestand succesvol is geopend. Daarna gebruiken we een while-lus en fgets() om tekstregels uit het bestand te lezen met behulp van een bestandsaanwijzer. Gebruik makend van printf() binnen de lus printen we elke regel tekst. Het uitvoeren van dit programma zou de uitvoer opleveren:

Uitgang

Methode 3: fscanf() Functie

Een standaardbibliotheekmethode genaamd fscanf() accepteert een reeks parameters en transformeert deze in waarden die uw toepassing kan gebruiken. Terwijl lezen uit het bestand , retourneert het de indelingsreeks in plaats van alles wat het verwacht te zien. Om te voorkomen dat uw software de opmaaktekenreeks interpreteert als onderdeel van zijn eigen syntaxis, moet deze tussen aanhalingstekens staan ('').

#include
int hoofd ( ) {
BESTAND * bestand ;
int getal1, getal2, getal3;
bestand = fopen ( 'C_File.txt' , 'R' ) ;
als ( bestand == NUL ) {
printf ( 'Fout: kan bestand niet openen \N ' ) ;
opbrengst 1 ;
}
fscanf ( bestand , '%d %d %d' , & nummer 1, & num2, & nummer 3 ) ;
printf ( 'Nummers gelezen uit het bestand zijn: %d, %d, %d \N ' , getal1, getal2, getal3 ) ;
fsluiten ( bestand ) ;
opbrengst 0 ;
}

In dit voorbeeld wordt het bestand geopend C_File.txt in leesmodus door eerst 3 int-variabelen te declareren, num1, num2 en num3. Met behulp van een if-statement bepalen we of het bestand succesvol is geopend. De volgende stap is om drie getallen uit het bestand te lezen met behulp van fscanf() en de %D formaat specificatie. De variabelen num1, num2 en num3 zijn waar de waarden worden bewaard. Als laatste gebruiken we printf() om de waarden van deze variabelen uit te voeren en fsluiten() om het bestand te sluiten. Het uitvoeren van dit programma zou resulteren in de onderstaande resultaten:

Uitgang

Methode 4: fgetc() Functie

Een bestand kan zijn lezen teken voor teken met behulp van de fgetc() functie. De ASCII-code voor het teken dat deze functie leest, wordt door deze functie geretourneerd. Het karakter van de opgegeven locatie van de bestandsaanwijzer wordt geretourneerd. Het volgende teken wordt gelezen zodra het teken is gelezen, volgens de bestandswijzer. Deze methode retourneert een EOF-bestand als de aanwijzer zich aan het einde van het bestand bevindt of als er een probleem is.

#include
int hoofd ( ) {
BESTAND * bestand ;
char c;
bestand = fopen ( 'C_File.txt' , 'R' ) ;
als ( bestand == NUL ) {
printf ( 'Fout: kan bestand niet openen \N ' ) ;
opbrengst 1 ;
}
terwijl ( ( c = fgetc ( bestand ) ) ! = EOF ) {
printf ( '%C' , C ) ;
}
fsluiten ( bestand ) ;
opbrengst 0 ;
}

In dit geval gebruiken we de fopen() opdracht om het tekstbestand te openen C_File.txt in leesmodus. Met behulp van een if-statement bepalen we of het bestand succesvol is geopend. Daarna gebruiken we een while-lus en fgetc() om tekens uit het bestand te lezen. Het karakter dat uit het bestand wordt ontvangen, wordt toegewezen aan de variabele C in de lus voordat ze worden afgedrukt met behulp van printf (). De lus blijft lopen totdat de EOF De constante (End of File) detecteert het einde van het bestand. Het uitvoeren van dit programma zou de volgende resultaten opleveren, als C_File.txt bevat het woord 'Linuxint'.

Uitgang

Conclusie

Door de hierboven beschreven stappen te gebruiken, kan C worden gebruikt een tekstbestand lezen En print alle strings het bevat. Het begint met het gebruik van de fopen() systeemaanroep om het bestand te openen, gevolgd door het use van fscanf(), fread(), fgets(), fgetc() om de gegevens te lezen. Daarna wordt het bestand afgesloten met fsluiten() en een for-lus wordt gebruikt om de strings af te drukken. Door deze technieken te gebruiken, kan C worden gebruikt om gegevens op een efficiënte manier te lezen en af ​​te drukken.