it:informatica:linguaggio_c:lettura_file_1
Return to Home page
If you found any error, or if you want to partecipate to the editing of this wiki, please contact: admin [at] skenz.it
You can reuse, distribute or modify the content of this page, but you must cite in any document (or webpage) this url: https://www.skenz.it/it/informatica/linguaggio_c/lettura_file_1
Lettura file (Esempio 1)
Concetti:
Funzioni di apertura, chiusura e lettura da file. Esempio di lettura di file riga per riga, parola per parola, carattere per carattere e di file strutturati (in cui in ogni riga ci sono campi di tipo diversi)
Testo:
Realizzare un programma che:
- Legga il seguente file:
- prova.txt
Prima riga Seconda riga
- Una riga per volta (riga per riga)
- Una parola per volta (parola per parola)
- Un carattere per volta (carattere per carattere)
- Legga il seguente file in cui in ogni riga è strutturata ed è composta da una stringa (un nome), un numero intero ed un numero reale:
- prova2.txt
Stefano 122333 23.5 Giulia 122334 29.5
- Il contenuto letto dai due file dovrà essere stampato su schermo (nel caso della lettura del file carattere per carattere si metta uno spazio tra un carattere ed il successivo)
Soluzione:
- lettura_file_1.c
/* Esempio di lettura di file riga per riga, parola per parola, carattere per carattere e di file strutturati (in cui in ogni riga ci sono campi di tipo diversi) */ #include <stdio.h> #include <stdlib.h> #define LUN 50 int main() { FILE *fp; char riga[LUN+1]; /* Per leggere stringhe di lunghezza fino a 50 caratteri devo dichiarle di dimensione 51, perche' l'ultimo carattere del vettore e' occupato dal carattere di terminazione stringa \0 */ char ch; int intValue; float floatValue; /* Lettura contenuto file prova.txt */ /* Apertura file */ printf("LETTURA prova.txt\n"); fp = fopen("prova.txt", "r"); /* Controllo se il file e' stato aperto senza errori */ if (fp == NULL){ printf("Errore: impossibile aprire il file 1-prova.txt\n"); exit(1); } /* Lettura del file riga per riga */ printf("Primo metodo di lettura:\n"); while ( fgets(riga, LUN, fp) != NULL ) { printf("LETTO: %s\n", riga); } /* Sconsigliato */ /* rewind(fp); printf("Secondo metodo di lettura:\n"); fgets(riga, LUN, fp); while ( !feof(fp) ) { printf("LETTO: %s\n", riga); fgets(riga, LUN, fp); } */ rewind(fp); /* Lettura del file parola per parola */ printf("Secondo metodo di lettura:\n"); while ( fscanf(fp, "%s", riga) != EOF ) { printf("LETTO: %s\n", riga); } rewind(fp); /* Lettura del file carattere per carattere */ printf("Terzo metodo di lettura:\n"); while ( (ch=getc(fp)) != EOF ) { printf("%c ", ch); } fclose(fp); /* Chiusura del file */ /* Lettura file prova2.txt */ /* Nota: il file contiene per ogni riga una stringa, un intero e un numero reale */ /* Apertura file */ printf("LETTURA prova2.txt\n"); if ( (fp = fopen("prova2.txt", "r")) == NULL){ printf("Errore: impossibile aprire il file 1-prova2.txt\n"); exit(1); } /* Primo metodo di lettura */ /* Consigliato perche' piu' compatto */ printf("Primo metodo di lettura:\n"); while ( fscanf(fp, "%s %d %f", riga, &intValue, &floatValue) != EOF ) { printf("LETTO: %s %d %f\n", riga, intValue, floatValue); } rewind(fp); /* Secondo metodo di lettura */ printf("Secondo metodo di lettura:\n"); while ( fgets(riga, LUN, fp) != NULL ) { /* E' consigliabile il metodo precedente */ sscanf(riga, "%s %d %f", riga, &intValue, &floatValue); printf("LETTO: %s %d %f\n", riga, intValue, floatValue); } fclose(fp); /* Chiusura file */ return 0; }
If you found any error, or if you want to partecipate to the editing of this wiki, please contact: admin [at] skenz.it
You can reuse, distribute or modify the content of this page, but you must cite in any document (or webpage) this url: https://www.skenz.it/it/informatica/linguaggio_c/lettura_file_1
/web/htdocs/www.skenz.it/home/data/pages/it/informatica/linguaggio_c/lettura_file_1.txt · Last modified: 2024/04/08 22:35 by 127.0.0.1