• Non ci sono risultati.

File sequenziali in C - Lettura

Nel documento Array monodimensionali in C (pagine 43-54)

Prof. G. A. Di Lucca - Univ. del Sannio 85

File sequenziali in C - scrittura

Scrittura su file:

fprintf(<nome_puntatore_file>, <formato_dati>, <nomi_variabili>) Scrive nel file puntato da <nome_puntatore_file> il/i valore/i di

<nomi_variabili> secondo il <formato_dati>

Es. File *fileNomi;

fileNomi =fopen(“Nomi.txt",“w"); //apre il file Nomi.txt in scrittura ... ...

fprintf(fileNomi,"%s", nome); // scrive il valore della stringa della // variabile nome in Nomi.txt ... ...

fclose (fileNomi);

Elementi di Informatica

Prof. G. A. Di Lucca - Univ. del Sannio 86

File sequenziali in C - Lettura

Lettura da file:

fscanf(<nome_puntatore_file>, <formato_dati>, &<nomi_variabili>)

Assegna a <nomi_variabili> il/i valore/i letti nel file puntato da <nome_puntatore_file> secondo il <formato_dati>

Es. File *fileNomi;

fileNomi =fopen(“Nomi.txt",“r"); //apre il file Nomi.txt in scrittura ... ...

fscanf(fileNomi,"%s", &nome); // legge una stringa in Nomi.txt e assgna // il valore letto alla variabile nome ... ...

Elementi di Informatica

Prof. G. A. Di Lucca - Univ. del Sannio 87

File sequenziali in C

Funzione feof(<nome_puntatore_file>)

permette di verifcare se si è raggiunta la fine del file puntato da <nome_puntatore_file>

Es. File *fileNomi;

fileNomi =fopen(“Nomi.txt",“r"); //apre il file Nomi.txt in scrittura ... ... fscanf(fileNomi,"%s",&nome); if (!feof(FileNomi)) { ... ... fscanf(fileNomi,"%s",&nome); ... ... } fclose (fileNomi); Elementi di Informatica

Prof. G. A. Di Lucca - Univ. del Sannio 88

File sequenziali in C: un programma di esempio #include <stdio.h>

#include <string.h> main ()

// Salva nomi in un file di testo {char nome[20];

int conta=0; //conta quanti nomi sono immessi

FILE *Fnomi; char risp ='S';

//apertura file Nomi.txt in scrittura Fnomi=fopen("Nomi.txt","w");

Elementi di Informatica

Prof. G. A. Di Lucca - Univ. del Sannio 89

File sequenziali in C: un programma di esempio // verifica che il file esiste

if (Fnomi == NULL)

printf ("Il file non puo' essere aperto \n"); else { while ((risp=='S')||(risp=='s')) {printf("Nome: \n"); fflush(stdin); gets(nome);

// scrive sul file il nome digitato fprintf(Fnomi,"%s \n",nome);

conta++;

printf("Vuoi inserire altri nomi?(S/N)"); scanf(“c",&risp);

} }

Elementi di Informatica

Prof. G. A. Di Lucca - Univ. del Sannio 90

File sequenziali in C: un programma di esempio

//chiusura del file Nomi.txt fclose(Fnomi);

printf("\nInseriti %d nomi nel file\n", conta);

system("Pause"); }

Elementi di Informatica

Prof. G. A. Di Lucca - Univ. del Sannio 91

File sequenziali in C: un programma di esempio

Elementi di Informatica

Prof. G. A. Di Lucca - Univ. del Sannio 92

File sequenziali in C: un programma di esempio #include <stdio.h>

#include <string.h>

main () // Legge i nomi dal file e li visualizza

{ int conta = 0; char nome[20]; FILE*Fnomi;

Fnomi=fopen("Nomi.txt","r"); //apre file in lettura

if (Fnomi == NULL)

printf ("Il file non puo' essere aperto \n"); else { do { fscanf(Fnomi,"%20s\n", &nome); puts(nome); conta++;} while (!feof(Fnomi)); } fclose(Fnomi);

printf("\nLetti %d nomi dal file\n", conta); system("Pause");

Elementi di Informatica

Prof. G. A. Di Lucca - Univ. del Sannio 93

File sequenziali in C: un programma di esempio #include <stdio.h>

#include <string.h> main ()

// Legge nomi da file e li carica in un array

{ int conta = 0, i; char nome[20]; struct nomi_str

{char *nome_str[20];}; struct nomi_str arr_nomi[50]; FILE*Fnomi;

Fnomi=fopen("Nomi.txt","r"); // apre in lettura

if (Fnomi == NULL)

printf ("Il file non puo' essere aperto \n"); else

{ while (!feof(Fnomi)) //carica in array

{fscanf(Fnomi,"%20s\n", &arr_nomi[conta].nome_str); conta++;}

}

Elementi di Informatica

Prof. G. A. Di Lucca - Univ. del Sannio 94

File sequenziali in C: un programma di esempio

printf("\n\nARRAY NOMI \n"); for(i=0;i<conta;i++)

printf("arr_Nomi[%d]=%s\n",i, arr_nomi[i].nome_str);

fclose(Fnomi); system("Pause"); }

Elementi di Informatica

Prof. G. A. Di Lucca - Univ. del Sannio 95

Esempio

Definizione del problema: Scrivere un programma che consente di

salvare i dati di un array monodimensionale di interi in un file

sequenziale di testo, salvando nel file anche il valore del riempimento quale primo elemento del file. Calcolare la sommatoria degli elementi dello array.

Copiare i dati salvati nel file in un nuovo array monodimensionale di interi.

Definizione dei dati del problema:

I: gli elementi dello array Pi:nessuna

U: il file di testo con i valori dello array ed il riempimento; il nuovo array ‘caricato’ con i valori nel file

Pu: nessuna

Elementi di Informatica

Prof. G. A. Di Lucca - Univ. del Sannio 96

#include<stdio.h> main ( )

{FILE*Fmio;

int i, num, riemp=5, tot=0, riemp2; int vett[]={1,4,7,8,11};

int vett2[15]; int a;

//apre fileint.txt in scrittura Fmio= fopen("fileint.txt","w");

//scrive valore di riemp sul primo rigo del file fprintf(Fmio,"%d\n", riemp);

Elementi di Informatica

Prof. G. A. Di Lucca - Univ. del Sannio 97

// scrive i valori di vett sugli altri righi for (i=0;i<riemp;i++)

{ fprintf(Fmio,"%d\n", vett[i]);

// calcola sommatoria elementi array tot=tot+vett[i];

}

printf("tot = %d \n", tot); printf("FINE SALVATAGGIO\n");

fclose(Fmio); //chiude fileint.txt

system("Pause“);

Un semplice programma C per scrittura e lettura di un file sequenziale

Elementi di Informatica

Prof. G. A. Di Lucca - Univ. del Sannio 98

Elementi di Informatica

Prof. G. A. Di Lucca - Univ. del Sannio 99

// Legge il contenuto del file e riporta i valori in un // array monodimensionale di interi

printf("INIZIO CARICAMENTO\n"); //apre fileint.txt in lettura Fmio= fopen("fileint.txt","r");

fscanf(Fmio,"%d",&riemp2); // legge il primo valore dal // file e lo assegna alla // variabile riemp2

Un semplice programma C per scrittura e lettura di un file sequenziale

Elementi di Informatica

Prof. G. A. Di Lucca - Univ. del Sannio 100

// verifica che non si è a fine file if (!feof(Fmio))

// legge gli altri valori dal file e li copia in vett2 {for (i=0;i<riemp2;i++) {fscanf(Fmio,"%d", &vett2[i]); printf("vett2[%d]=%d \n",i,vett2[i]); } printf("FINE CARICAMENTO\n"); }

else printf("RAGGIUNTA FINE FILE"); fclose(Fmio); //chiude fileint.txt

Elementi di Informatica

Prof. G. A. Di Lucca - Univ. del Sannio 101

... cosa accade in esecuzione ...

Elementi di Informatica

Prof. G. A. Di Lucca - Univ. del Sannio 102

// Carica da file un array di interi con ciclo WHILE Fmio= fopen("fileint.txt","r");

printf("\n\n\n Cicla su file con while (!feof)\n"); fscanf(Fmio,"%d",&riemp2); if (!feof(Fmio)) {i=0; fscanf(Fmio,"%d", &vett2[i]); while (!feof(Fmio)) {printf("vett2[%d]=%d \n",i,vett2[i]); fscanf(Fmio,"%d", &vett2[i]); i++; }

printf("FINE CARICAMENTO con while\n"); }

else printf("RAGGIUNTA FINE FILE"); fclose(Fmio);

Elementi di Informatica

Prof. G. A. Di Lucca - Univ. del Sannio 103

... cosa accade in esecuzione ...

Elementi di Informatica

Prof. G. A. Di Lucca - Univ. del Sannio 104

// Aggiunge altri valori accodandoli alla fine del file printf(“INIZIA ACCODAMENTO\n");

Fmio=fopen("fileint.txt","a"); // apre per accodare // aggiunge in coda al file i valori di vett // moltiplicati per 2;

for (i=0;i<riemp;i++)

fprintf(Fmio,"%d\n", (vett[i]*2)); printf("FINE ACCODAMENTO\n");

fclose(Fmio);

Elementi di Informatica

Prof. G. A. Di Lucca - Univ. del Sannio 105

... cosa accade in esecuzione ...

Elementi di Informatica

Prof. G. A. Di Lucca - Univ. del Sannio 106

printf("LEGGE E VISUALIZZA TUTTI I VALORI NEL FILE \n"); //apre fileint.txt in lettura

Fmio=fopen("fileint.txt","r"); if (!feof(Fmio))

{

//legge e assegna alla variabile a // il primo valore nel file

fscanf(Fmio,"%d", &a);

Elementi di Informatica

Prof. G. A. Di Lucca - Univ. del Sannio 107

// cicla fino a che non si è a fine file

// e legge e visualizza gli altri valori dal file i=1;

while (!feof(Fmio)

{printf("valore n.ro %d = %d\n",i,a); fscanf(Fmio,"%d", &a);

i++; } }

else printf("RAGGIUNTA FINE FILE");

fclose(Fmio); //chiude fileint.txt

system("Pause"); } // fine programma

Un semplice programma C per scrittura e lettura di un file sequenziale

Elementi di Informatica

Esempio

Definizione del problema: Scrivere un programma che

consente di inserire in un array i dati di una agenda

telefonica, ovvero nome, cognome, e n.ro di telefono di una

Nel documento Array monodimensionali in C (pagine 43-54)

Documenti correlati