User Tools

Site Tools


it:informatica:linguaggio_c:lettura_file_1
Return to Home page

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

it:informatica:linguaggio_c:lettura_file_1 [2019/02/26 14:35] (current)
Line 1: Line 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:
 +<file txt prova.txt>​
 +Prima riga
 +Seconda riga
 +</​file>​
 +    * 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:
 +<file txt prova2.txt>​
 +Stefano 122333 23.5
 +Giulia 122334 29.5
 +</​file>​
 +  * 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:​**\\
 +<file C 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;
 +}
 +</​file>​

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?rev=1551188125&do=diff
/web/htdocs/www.skenz.it/home/data/pages/it/informatica/linguaggio_c/lettura_file_1.txt · Last modified: 2019/02/26 14:35 (external edit)

Privacy Policy