Aquest article tracta maneres útils de llegir un fitxer de text en el llenguatge de programació C.
Llegiu un fitxer de text en C
Hi ha quatre mètodes per llegir un fitxer de text en C, que són.
- fscanf() per llegir un fitxer de text
- fgets() per llegir un fitxer de text
- fgetc() per llegir un fitxer de text
- fread() per llegir un fitxer de text
Mètode 1: ús de la funció fscanf() per llegir un fitxer de text en C
El fscanf() La funció és una funció de biblioteca estàndard que pren una matriu d'arguments i els converteix en valors que pot utilitzar el vostre programa. Troba una cadena de format dins del fitxer i retorna una cadena de format quan llegeix el fitxer. La cadena de format s'ha d'incloure entre cometes (“”) perquè el vostre programa no les interpreti com a part de la seva pròpia sintaxi.
El fscanf() La funció llegeix les dades als llocs que proporcionen els elements de la llista d'arguments. Totes les entrades de la llista d'arguments han d'apuntar a variables els tipus de les quals coincideixen amb els especificadors de tipus de la cadena de format.
Ofereix EOF (final del fitxer) o el nombre de variables amb valors assignats.
Vegem un exemple per llegir un fitxer de text utilitzant el fscanf() funció:
#inclouint principal ( )
{
DOSSIER * ptr = fopen ( 'nom_fitxer.txt' , 'r' ) ;
si ( ptr == NULL ) {
imprimirf ( 'no existeix aquest fitxer'. ) ;
tornar 0 ;
}
char buf [ 100 ] ;
mentre ( fscanf ( ptr, '%s' , buf ) == 1 )
imprimirf ( '%s \n ' , buf ) ;
tornar 0 ;
}
En aquest codi, fopen() La funció s'utilitza per obrir el fitxer sota la variable punter ptr. fscanf() A continuació, s'utilitza la funció per llegir el fitxer i després imprimir-ne el contingut.
Sortida
Mètode 2: ús de la funció fread() per llegir un fitxer de text en C
Les dades del fitxer les llegeix Fread () mètode i emmagatzemat en una memòria intermèdia. Es llegeixen fins a un recompte d'elements en un buffer de matriu fread () funció del flux d'entrada, que es proporciona com a argument de funció.
Quan el nombre total d'elements es llegeix correctament, es retorna un objecte size_t. Si aquest valor és diferent del valor especificat pel programa, s'ha produït un error o s'ha arribat al final del fitxer.
#inclouint principal ( )
{
buffer de caràcters [ 33 ] ;
DOSSIER * corrent;
rierol = fopen ( 'nom_fitxer.txt' , 'r' ) ;
int count = fread ( & buffer, mida de ( char ) , 33 , corrent ) ;
f tancar ( corrent ) ;
imprimirf ( 'Dades llegides del fitxer: %s \n ' , amortidor ) ;
imprimirf ( 'Nombre d'elements llegits: %d' , comptar ) ;
tornar 0 ;
}
En aquest codi, el fopen() La funció s'utilitza per obrir el fitxer i després el fread () A continuació, s'utilitza la funció per llegir el fitxer i després imprimir-ne el contingut. 33 mostra el nombre de caràcters que llegirà del fitxer.
Sortida
Mètode 3: utilitzant la funció fgets() per llegir un fitxer de text en C
Amb el fgets() funció, es llegeix una línia del flux especificat i s'emmagatzema a la variable de cadena corresponent. Quan es llegeixen (n-1) caràcters, el caràcter de nova línia o el final del fitxer, o el que passi primer, el programa finalitza. Si la funció té èxit, es retorna la mateixa cadena. El contingut de la cadena es manté al seu lloc i es produeix un punter nul si la funció arriba al final del fitxer sense llegir cap caràcter.
En cas d'error, proporciona un punter nul.
#inclouint principal ( ) {
DOSSIER * fp;
car str [ 60 ] ;
fp = fopen ( 'fitxer.txt' , 'r' ) ;
si ( fp == NULL ) {
terror ( 'Error en obrir el fitxer' ) ;
tornar ( - 1 ) ;
}
si ( fgets ( carrer, 100 , fp ) ! =NULL ) {
posa ( str ) ;
}
f tancar ( fp ) ;
tornar ( 0 ) ;
}
En aquest codi, fitxer.txt el fitxer s'obre per fopen() funció i després fgets() A continuació, s'utilitza la funció per llegir les cadenes del fitxer i després imprimir-les. 100 mostra el nombre de cadenes que llegirà.
Sortida
Mètode 4: utilitzant la funció fgetc() per llegir un fitxer de text en C
El fgtec() La funció s'utilitza per llegir els caràcters un per un. Aleshores, la funció retorna el codi ASCII del caràcter que ha llegit. Retorna el caràcter que estava present al lloc indicat del punter del fitxer. Aleshores, el punter del fitxer passa al caràcter següent. Si hi ha un error o el punter arriba al final del fitxer, aquesta funció retorna un EOF (End-Of-File).
#inclouint principal ( )
{
DOSSIER * fp = fopen ( 'fitxer.txt' , 'r' ) ;
si ( fp == NULL )
tornar 0 ;
fer {
char c = fgetc ( fp ) ;
si ( feof ( fp ) )
trencar ;
imprimirf ( '%c' , c ) ;
} mentre ( 1 ) ;
f tancar ( fp ) ;
tornar ( 0 ) ;
}
El ' fitxer.txt ” obre el fitxer fopen() funció en aquest codi sota la variable punter fp. A continuació, es llegeixen els caràcters del fitxer amb el fgetc() mètode, que imprimeix els caràcters que s'han llegit.
Sortida
Conclusió
Llegir fitxers és una necessitat per a tots els usuaris d'ordinadors, i sobretot per a un desenvolupador, és important que pugui accedir als fitxers utilitzant el seu codi. Per tant, s'esmenten 4 mètodes anteriors a l'article per llegir a fitxer de text utilitzant el llenguatge C. fscanf() i fread () s'utilitzen per llegir els fitxers de la mateixa manera, amb l'excepció que fread () ens permet especificar el nombre de caràcters que l'usuari vol llegir, mentre fgets() s'utilitza per llegir un fitxer línia per línia, i fgetc() s'utilitza per llegir un fitxer caràcter per caràcter.