Sådan læser du en tekstfil og udskriver alle strenge i C

Sadan Laeser Du En Tekstfil Og Udskriver Alle Strenge I C



Læser en tekstfil og udskriver det hele strenge er en nøgleopgave, som ofte udføres af C-programmører. Det er vigtigt at forstå det grundlæggende læsning -en tekstfil i C og hvordan Print det strenge fra det, før du forsøger denne opgave.

Læsning af en tekstfil og udskrivning af alle strenge, den indeholder, vil blive demonstreret ved hjælp af C-programmering i denne artikel.







Læs en tekstfil og udskriv alle strenge i C

Der er fire funktioner til at læse en tekstfil og udskrive alle strenge i C, som er som følger:



Metode 1: fread() Funktion

Data er læse fra filen og gemt i en buffer ved hjælp af C-funktionen fread() . For at tælle elementer i en arraybuffer skal fread() metode læser fra inputstrømmen, der er angivet som funktionsparameter. Efterhånden som hver tegnfunktion læser, bevæger filpositionsindikatoren for den angivne inputstrøm sig fremad.



Det fread() metode i C har syntaksen.





size_t fread ( ugyldig * array_buffer, size_t størrelse , størrelse_t antal, FIL * file_stream )

Lad os se på fread() funktionsparametre mere detaljeret:



array buffer: Data opbevares midlertidigt i en computers buffer, et hukommelsesrum. Dette argument er en pointer, der henviser til det sted i hukommelsen af ​​bufferen, der vil indeholde dataene Læs fra inputstrømmen.

størrelse: Dette argument instruerer funktionen af, hvor mange bytes data der vil blive læst fra inputstrømmen for hver blok.

tælle: Den specificerer, hvor mange tegn der vil blive læst fra datainputstrømmen.

filstrøm: Det er en pointer, der henviser til et FILE-objekt.

#include
#include
int main ( ) {
FIL * fil ;
kul buffer [ 100 ] ;
fil = fopen ( 'C_File.txt' , 'r' ) ;
hvis ( fil == NULL ) {
printf ( 'Fejl: Filen kunne ikke åbnes \n ' ) ;
Vend tilbage 1 ;
}
int tælle =fread ( & buffer, størrelse af ( char ) , 100 , fil ) ;
fluk ( fil ) ;
printf ( 'Data læst fra filen er: %s \n ' buffer ) ;
printf ( 'Antal læste elementer: %d' , tælle ) ;
fluk ( fil ) ;
Vend tilbage 0 ;
}

I dette eksempel definerer vi en tegnarraybuffer af størrelse 100 før brug fopen() for at åbne tekstfilen C_File.txt i læsetilstand. Ved hjælp af en if-sætning afgør vi, om filen blev åbnet. Det følgende trin er at læse op til 100 bytes af data fra filen ved hjælp af fread() . Målbufferen, i dette tilfælde bufferarrayet, er den første parameter til fread(). Det andet argument, størrelse på , bestemmer størrelsen på hvert element, der skal læses, mens vi læser i tegn . Det tredje input er den mængde, der skal læses, hvilket i dette tilfælde er 100 . Det fil pointer er den fjerde parameter. Til sidst bruger vi printf() for at udskrive data læst fra filen og fclose() for at lukke filen. At køre dette program ville resultere i resultater som dette, if C_File.txt :

Produktion

Metode 2: fgets() Funktion

C-sproget fgets() metode læser n tegn fra strømmen ind i strengen str. Det fgets() metoden fortsætter med at læse tegn fra strømmen indtil (n-1) tegn er blevet læst, et nylinjetegn er blevet registreret, eller slutningen af ​​filen (EOF) er nået.

#include
int main ( ) {
FIL * fil ;
kul buffer [ 100 ] ;
fil = fopen ( 'C_File.txt' , 'r' ) ;
hvis ( fil == NULL ) {
printf ( 'Fejl: Filen kunne ikke åbnes \n ' ) ;
Vend tilbage 1 ;
}
mens ( fgets ( buffer, 100 , fil ) ) {
printf ( 'Streng læst fra fil: %s' buffer ) ;
}
fluk ( fil ) ;
Vend tilbage 0 ;
}

Dette eksempel bruger fopen() for at åbne en tekstfil kaldet C_File.txt i læsetilstand efter først at have erklæret en tegnarraybuffer af størrelse 100 . Ved hjælp af en if-sætning afgør vi, om filen blev åbnet. Derefter bruger vi en while-løkke og fgets() at læse tekstlinjer fra filen ved hjælp af en filmarkør. Ved brug af printf() inden for løkken udskriver vi hver tekstlinje. At køre dette program ville give output:

Produktion

Metode 3: fscanf() Funktion

En standard biblioteksmetode kaldet fscanf() accepterer en række parametre og omdanner dem til værdier, som din applikation kan bruge. Mens læse fra filen , returnerer den formatstrengen i stedet for alt, hvad den forventer at se indeni. For at forhindre din software i at fortolke formatstrengen som en del af sin egen syntaks, skal den være omgivet af anførselstegn ('').

#include
int main ( ) {
FIL * fil ;
int num1, num2, num3;
fil = fopen ( 'C_File.txt' , 'r' ) ;
hvis ( fil == NULL ) {
printf ( 'Fejl: Filen kunne ikke åbnes \n ' ) ;
Vend tilbage 1 ;
}
fscanf ( fil , '%d %d %d' , & nummer 1, & nummer 2, & nummer 3 ) ;
printf ( 'Numre læst fra filen er: %d, %d, %d \n ' , num1, num2, num3 ) ;
fluk ( fil ) ;
Vend tilbage 0 ;
}

Dette eksempel åbner filen C_File.txt i læsetilstand ved først at erklære 3 int-variabler, num1, num2 og num3. Ved hjælp af en if-sætning afgør vi, om filen blev åbnet. Det følgende trin er at læse tre tal fra filen vha fscanf() og %d formatspecifikation. Variablerne num1, num2 og num3 er der, hvor værdierne opbevares. Til sidst bruger vi printf() at udlæse værdierne af disse variable og fclose() for at lukke filen. Kørsel af dette program vil resultere i resultaterne vist nedenfor:

Produktion

Metode 4: fgetc() Funktion

En fil kan være Læs tegn for tegn ved hjælp af fgetc() fungere. ASCII-koden for det tegn, som denne funktion læser, returneres af denne funktion. Tegnet fra filmarkørens angivne placering returneres. Det følgende tegn læses, når tegnet er blevet læst, ifølge filmarkøren. Denne metode returnerer en EOF-fil, hvis markøren er i slutningen af ​​filen, eller hvis der er et problem.

#include
int main ( ) {
FIL * fil ;
char c;
fil = fopen ( 'C_File.txt' , 'r' ) ;
hvis ( fil == NULL ) {
printf ( 'Fejl: Filen kunne ikke åbnes \n ' ) ;
Vend tilbage 1 ;
}
mens ( ( c = fgetc ( fil ) ) ! = EOF ) {
printf ( '%c' , c ) ;
}
fluk ( fil ) ;
Vend tilbage 0 ;
}

I dette tilfælde bruger vi fopen() kommando for at åbne tekstfilen C_File.txt i læsetilstand. Ved hjælp af en if-sætning afgør vi, om filen blev åbnet. Derefter bruger vi en while-løkke og fgetc() for at læse tegn fra filen. Tegnet modtaget fra filen tildeles variablen c inde i løkken, før den udskrives ved brug printf (). Sløjfen fortsætter med at køre indtil EOF (End of File) konstant registrerer slutningen af ​​filen. Kørsel af dette program vil få følgende resultater, hvis C_File.txt indeholder ordet 'Linuxint'.

Produktion

Konklusion

Ved at bruge de trin, der er skitseret ovenfor, kan C bruges til læse en tekstfil og print alle strenge Det indeholder. Det begynder med at bruge fopen() systemkald for at åbne filen, efterfulgt af brugen af fscanf(), fread(), fgets(), fgetc() at læse dataene. Bagefter lukkes filen vha fclose() og en for-løkke bruges til at udskrive strengene. Ved at anvende disse teknikker kan C bruges til at hjælpe med at læse og udskrive data på en effektiv måde.