Com llegir un fitxer de text i imprimir totes les cadenes en C

Com Llegir Un Fitxer De Text I Imprimir Totes Les Cadenes En C



Llegint un fitxer de text i imprimint-ho tot cordes és una tasca clau que solen fer els programadors C. És important entendre els fonaments lectura a fitxer de text en C i com fer-ho imprimir el cordes d'ell abans d'intentar aquesta tasca.

La lectura d'un fitxer de text i la impressió de totes les cadenes que conté es demostrarà mitjançant la programació C en aquest article.







Llegiu un fitxer de text i imprimiu totes les cadenes en C

Hi ha quatre funcions per llegir un fitxer de text i imprimir totes les cadenes en C, que són les següents:



Mètode 1: funció fread().

Les dades són llegir del fitxer i s'emmagatzema en una memòria intermèdia mitjançant la funció C fread () . Per tal de comptar elements en una memòria intermèdia de matriu, el fread () El mètode llegeix des del flux d'entrada proporcionat com a paràmetre de funció. A mesura que es llegeix cada funció de caràcter, l'indicador de posició del fitxer per al flux d'entrada especificat avança.



El fread () mètode en C té la sintaxi.





size_t fread ( buit * array_buffer, size_t mida , size_t count, FILE * file_stream )

Vegem els paràmetres de la funció fread() amb més detall:



buffer de matriu: Les dades es mantenen temporalment a la memòria intermèdia d'un ordinador, un espai de memòria. Aquest argument és un punter que fa referència al lloc a la memòria del buffer que contindrà les dades llegir del flux d'entrada.

mida: Aquest argument indica la funció de quants bytes de dades es llegiran del flux d'entrada per a cada bloc.

recompte: Especifica quants caràcters es llegiran del flux d'entrada de dades.

file_stream: És un punter que fa referència a un objecte FILE.

#inclou
#include
int principal ( ) {
DOSSIER * dossier ;
buffer de caràcters [ 100 ] ;
dossier = fopen ( 'C_File.txt' , 'r' ) ;
si ( dossier == NULL ) {
imprimirf ( 'Error: no s'ha pogut obrir el fitxer \n ' ) ;
tornar 1 ;
}
int comptar =llegir ( & buffer, mida de ( char ) , 100 , dossier ) ;
f tancar ( dossier ) ;
imprimirf ( 'Les dades llegides del fitxer són: %s \n ' , amortidor ) ;
imprimirf ( 'Nombre d'elements llegits: %d' , comptar ) ;
f tancar ( dossier ) ;
tornar 0 ;
}

En aquest exemple, definim una memòria intermèdia de matriu de caràcters de mida 100 abans d'utilitzar fopen() per obrir el fitxer de text C_Fitxer.txt en mode de lectura. Utilitzant una instrucció if, determinem si el fitxer s'ha obert correctament. El següent pas és llegir fins 100 bytes de dades del fitxer utilitzant fread () . La memòria intermèdia de destinació, en aquest cas la matriu de memòria intermèdia, és el primer paràmetre a fread(). El segon argument, mida de , determina la mida de cada element a llegir a mesura que estem llegint en caràcters . La tercera entrada és la quantitat a llegir, que en aquest cas és 100 . El punter de fitxer és el quart paràmetre. Per últim, fem servir printf() per imprimir les dades llegides del fitxer i fclose() per tancar el fitxer. L'execució d'aquest programa donaria resultats com aquest, si C_Fitxer.txt :

Sortida

Mètode 2: funció fgets().

El llenguatge C fgets() El mètode llegeix n caràcters del flux a la cadena str. El fgets() El mètode continua llegint caràcters del flux fins a (n-1) s'han llegit caràcters, s'ha detectat un caràcter de nova línia o s'ha arribat al final del fitxer (EOF).

#inclou
int principal ( ) {
DOSSIER * dossier ;
buffer de caràcters [ 100 ] ;
dossier = fopen ( 'C_File.txt' , 'r' ) ;
si ( dossier == NULL ) {
imprimirf ( 'Error: no s'ha pogut obrir el fitxer \n ' ) ;
tornar 1 ;
}
mentre ( fgets ( buffer, 100 , dossier ) ) {
imprimirf ( 'Cadena llegida del fitxer: %s' , amortidor ) ;
}
f tancar ( dossier ) ;
tornar 0 ;
}

Aquest exemple utilitza fopen() per obrir un fitxer de text anomenat C_Fitxer.txt en mode de lectura després de declarar primer un buffer de matriu de caràcters de mida 100 . Utilitzant una instrucció if, determinem si el fitxer s'ha obert correctament. Després d'això, fem servir un bucle while i fgets() per llegir línies de text del fitxer mitjançant un punter de fitxer. Utilitzant printf() dins del bucle, imprimim cada línia de text. L'execució d'aquest programa proporcionaria la sortida:

Sortida

Mètode 3: funció fscanf().

Un mètode de biblioteca estàndard anomenat fscanf() accepta una matriu de paràmetres i els transforma en valors que la vostra aplicació pot utilitzar. Mentre lectura del fitxer , retornarà la cadena de format en lloc de qualsevol cosa que preveu veure dins. Per evitar que el vostre programari interpreti la cadena de format com a part de la seva pròpia sintaxi, s'ha d'envoltar entre cometes (“”).

#inclou
int principal ( ) {
DOSSIER * dossier ;
int num1, num2, num3;
dossier = fopen ( 'C_File.txt' , 'r' ) ;
si ( dossier == NULL ) {
imprimirf ( 'Error: no s'ha pogut obrir el fitxer \n ' ) ;
tornar 1 ;
}
fscanf ( dossier , '%d %d %d' , & número 1, & num2, & número 3 ) ;
imprimirf ( 'Els números llegits del fitxer són: %d, %d, %d \n ' , núm1, núm2, núm3 ) ;
f tancar ( dossier ) ;
tornar 0 ;
}

Aquest exemple obre el fitxer C_Fitxer.txt en mode de lectura declarant primer 3 variables int, num1, num2 i num3. Utilitzant una instrucció if, determinem si el fitxer s'ha obert correctament. El següent pas és llegir tres números del fitxer utilitzant fscanf() i la %d especificador de format. Les variables num1, num2 i num3 són on es guarden els valors. Per últim, fem servir printf() per sortir els valors d'aquestes variables i fclose() per tancar el fitxer. L'execució d'aquest programa donaria com a resultat els resultats que es mostren a continuació:

Sortida

Mètode 4: funció fgetc().

Un fitxer pot ser llegir personatge a personatge utilitzant el fgetc() funció. Aquesta funció retorna el codi ASCII del caràcter que llegeix aquesta funció. Es retorna el caràcter de la ubicació especificada del punter del fitxer. El caràcter següent es llegeix un cop s'ha llegit el caràcter, segons el punter del fitxer. Aquest mètode retorna un fitxer EOF si el punter es troba al final del fitxer o si hi ha un problema.

#inclou
int principal ( ) {
DOSSIER * dossier ;
char c;
dossier = fopen ( 'C_File.txt' , 'r' ) ;
si ( dossier == NULL ) {
imprimirf ( 'Error: no s'ha pogut obrir el fitxer \n ' ) ;
tornar 1 ;
}
mentre ( ( c = fgetc ( dossier ) ) ! = EOF ) {
imprimirf ( '%c' , c ) ;
}
f tancar ( dossier ) ;
tornar 0 ;
}

En aquest cas, fem servir el fopen() comanda per obrir el fitxer de text C_Fitxer.txt en mode de lectura. Utilitzant una instrucció if, determinem si el fitxer s'ha obert correctament. Després d'això, fem servir un bucle while i fgetc() per llegir caràcters del fitxer. El caràcter rebut del fitxer s'assigna a la variable c dins del bucle abans de ser imprès utilitzant printf (). El bucle continua funcionant fins al EOF La constant (Fi del fitxer) detecta el final del fitxer. L'execució d'aquest programa obtindria els resultats següents, si C_Fitxer.txt conté la paraula 'Linuxint'.

Sortida

Conclusió

Mitjançant els passos descrits anteriorment, es pot utilitzar C llegir un fitxer de text i imprimir totes les cadenes conté. Comença utilitzant el fopen() crida al sistema per obrir el fitxer, seguida de l'ús de fscanf(), fread(), fgets(), fgetc() per llegir les dades. Després, el fitxer es tanca utilitzant fclose() i un bucle for s'utilitza per imprimir les cadenes. Mitjançant l'ús d'aquestes tècniques, es pot utilitzar C per ajudar a llegir i imprimir dades d'una manera eficient.