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.
Corso di C
Cosa troverai in questo corso base
- Introduzione al linguaggio
- Spiegazione dei concetti di teoria
- Spiegazione degli esercizi passo passo
- Materiale da poter scaricare
Corso di C ++
Cosa troverai in questo corso base
- Introduzione al linguaggio
- Spiegazione dei concetti di teoria
- Spiegazione degli esercizi passo passo
- Materiale da poter scaricare
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.
Generico Karmatech Hard Disk Esterno, Disco Rigido Esterno Portatile 2.5, USB 3.0, 500 GB, Nero (500 GB) (Ricondizionato)
20,00 € (a partire da 18 Marzo 2024 14:59 GMT +01:00 - Altre informazioniProduct prices and availability are accurate as of the date/time indicated and are subject to change. Any price and availability information displayed on [relevant Amazon Site(s), as applicable] at the time of purchase will apply to the purchase of this product.)HP, Pc Desktop Pronto All'Uso, Computer Pc Fisso Intel i7, Ram 16Gb, SSD 512Gb, Pacchetto Libre Office, Windows 10 Pro (Ricondizionato)
159,00 € (a partire da 18 Marzo 2024 14:59 GMT +01:00 - Altre informazioniProduct prices and availability are accurate as of the date/time indicated and are subject to change. Any price and availability information displayed on [relevant Amazon Site(s), as applicable] at the time of purchase will apply to the purchase of this product.)HP EliteBook 840, CPU intel i5-6200U display 14" Argento ram 16Gb SSD 500Gb Windows 10, Computer portatile con libre office (ricondizionato)
258,00 € (a partire da 18 Marzo 2024 14:59 GMT +01:00 - Altre informazioniProduct prices and availability are accurate as of the date/time indicated and are subject to change. Any price and availability information displayed on [relevant Amazon Site(s), as applicable] at the time of purchase will apply to the purchase of this product.)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 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.
Ecco dunque un semplice esempio di utilizzo della funzione:
#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
Somma elementi diagonale principale di una matrice
Come sommare gli elementi della cornice esterna