fscanf

In questa lezione parleremo di fscanf in C, cioè della funzione che serve a leggere da un file in modo formattato, chiaramente dopo l’apertura con fopen.

Nella lezione precedente abbiamo studiato la funzione fprintf che serve a scrivere sui file e abbiamo detto che è molto simile a printf.

Allo stesso modo anche fscanf è molto simile a scanf, infatti la sintassi è la seguente:

int fscanf(FILE *fp, char *formato, [argomenti]...)

Anche in questo caso notiamo che la differenza con scanf è nel primo argomento che rappresenta il puntatore allo stream, mentre il significato degli altri argomenti rimane invariato.

Inoltre la funzione fscanf, a differenza di scanf, ritorna un valore intero, che rappresenta il numero di caratteri letti.

Anche con fscanf, in caso di insuccesso la funzione restituisce una costante intera EOF (end of file).


Esempio d’utilizzo della funzione fscanf

Realizziamo un programma che prende un file di testo esistente, quello che abbiamo creato nell’esercizio precedente e, dopo l’apertura, ne leggiamo il contenuto.

La funzione fscanf non considera gli spazi all’interno del secondo argomento, quindi potrei anche scrivere “%s%s%d, ovvero tutto attaccato, senza modificare il risultato. Per lo stesso ragionamento potrei lasciare anche tanti spazi tra gli specificatori di formato senza anche in questo caso variare l’output.

Quando legge il file la funzione fscanf percepisce gli argomenti dallo spazio che c’è tra di loro all’interno del file.

#include <stdio.h>
#include <stdlib.h>
#define N 5

int main() {
	FILE *fp;
	char cognome[20];
	char nome[20];
	int i, voto;
	
	if((fp=fopen("alunni.txt", "rt"))==NULL) {
		printf("Errore nell'apertura del file'");
		exit(1);
	}
	
	for(i=0;i<N;i++) {
		fscanf(fp,"%s %s %d\n", &cognome, &nome, &voto);
		printf("cognome: %s, nome: %s, voto: %d\n", cognome, nome, voto);
	}
	fclose(fp);
	
return 0;
	
}

Questo è solo un semplice esempio d’uso della funzione fscanf, più avanti faremo tante altre esercitazioni.

Alcuni link utili

Media per riga e per colonna

Somma elementi diagonale principale di una matrice

Come sommare gli elementi della cornice esterna

Come sommare due matrici

Sommare dei numeri di una matrice

Matrice trasposta

Prodotto tra matrici

Ricerca elementi in una matrice

Inserire dati in una matrice

Tavola pitagorica in C

Array multidimensionali

Programma sui triangoli in C

Media dei numeri in un array

Array con numeri random

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 *