fgets

In questo tutorial parleremo della funzione fgets in C, cioè la funzione che serve a leggere le stringhe in un file, precedentemente aperto con la funzione fopen.

La sintassi della funzione fgets è la seguente:

char *fgets(char *stringa, int lun, FILE *fp)

Quindi la funzione legge una stringa e la memorizza nella locazione di memoria puntata da stringa. Con lun intendiamo il numero massimo di caratteri della stringa che può essere letto. Vengono letti lun-1 caratteri perchè ricordiamo che la stringa termina con il carattere terminatore (\0). Come abbiamo già spiegato per le altre funzioni, FILE *fp è il puntatore al file restituito dalla funzione fopen.

La funzione ritorna un puntatore alla stringa e nel caso in cui si ha un errore restituisce NULL.


Esempio di utilizzo di fgets in C

Proponiamo dunque un semplice esempio che permette di aprire un file in lettura e contare quante righe e caratteri ci sono.

Inizializziamo a zero i contatori della riga e dei caratteri, nr ed nc.

Chiediamo in input il nome del file di cui vogliamo conoscere il numero di righe e di caratteri e apriamo il file con la funzione fopen. Visualizziamo un messaggio di errore se ci sono problemi nell’apertura del file.

Dopo utilizziamo un ciclo while con la funzione fgets, che come abbiamo detto prende tre parametri: la stringa, il numero di caratteri e il puntatore al file. Finchè non arriviamo a leggere tutte le stringhe presenti nel file, incrementiamo semplicemente i due contatori.

Infine chiudiamo il file usando la funzione fclose e stampiamo il risultato ottenuto.

Ecco dunque il listato completo:

#include <stdio.h>
#include <string.h>
#include <stdlib.h>

#define N 60

int main()
{
   	FILE *fp;
	char nome[FILENAME_MAX],r[N];
   	int nr=0, nc=0;

   	printf("Nome del file:");
   	gets(nome);

   	if ((fp=fopen(nome,"rt"))==NULL) {
            printf("Errore nell'apertura del file");
	    exit(1);
   	}

   	while(fgets(r,N,fp)!=NULL) {
             nr++;
             nc+= strlen(r)-1;
   	}                                    
   
   	fclose(fp);
   	printf("Totale righe: %d\nTotale caratteri: %d\n", nr, nc);
   
   	return 0;
}

Chiaramente questo era solo un semplice esempio d’uso della funzione fgets in C, approfondiremo più avanti con altri esempi.

Alcuni link utili

Indice argomenti linguaggio C

La funzione fopen

La funzione fclose

Funzione fprintf

Funzione fscanf

Allocazione dinamica della memoria con malloc

Strutture in C

Typedef struct in C

Esercitazione sulle struct in C

Realizzare un menù di scelta in C

Strutture complesse in C

Come sommare gli elementi della cornice esterna

Come sommare due matrici

Matrice trasposta

Prodotto tra matrici

Ricerca elementi in una matrice

Tavola pitagorica in C

Array multidimensionali

Quick sort in C

Selection sort in C

Merge sort in C

Insertion Sort in C

Autore dell'articolo: Cristina

Avatar per Coding Creativo

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *