☰
Current Page
Main Menu
Home
Home
Editing
come_gestire_dati_fissi
Edit
Preview
h1
h2
h3
Keybinding
default
vim
emacs
Markup
AsciiDoc
Creole
Markdown
MediaWiki
Org-mode
Plain Text
RDoc
Textile
BibTeX
Pod
reStructuredText
Help 1
Help 1
Help 1
Help 2
Help 3
Help 4
Help 5
Help 6
Help 7
Help 8
Autosaved text is available. Click the button to restore it.
Restore Text
# Come gestire una serie di dati fissi Quando si ha una serie di **dati fissi** all'interno del programma, (per esempio un dato che identifica la modalità di un lavoro, o uno che indica il ritardo di accensione di un'uscita) il modo migliore per **gestirli, caricarli, salvarli ecc**. è quello di definire tipi di **strutture dati** (typedef struct), nelle quali vengono definiti i dati fissi, e di definire una serie di **funzioni** per varie operazioni relative ai dati (come ad esempio resettarli con i valori di default ecc.). La struttura dati viene dichiarata nel **common.h** (o comunque all'interno di un file .h incluso nel common). All'interno dello stesso file .h vado anche a definire le **funzioni** e le **variabili** per eseguire operazioni con i dati. Esempio: // dichiaro le funzioni per eseguire le operazioni con i dati fissi void carica_fissi(void); char salva_fissi(void); void reset_fissi(void); char pathProg[32] = "C:\\prog.fissi"; // viene dichiarato il percorso relativo al file da cui prendere i dati fissi // il percorso è di una penna USB (C è la penna) // definisco un tipo di struttura chiamata dati_fissi e dichiaro i nomi dei dati typedef struct dati_fissi { unsigned char dato_fisso1; unsigned char dato_fisso2; unsigned char dato_fisso3; long int dato_fisso4; } dati_fissi d; // viene dichiarata una struttura dati d FILE *f //viene dichiarato un file f che ci servirà nelle funzioni // Questa funzione prende i valori dei dati fissi da un file e li carica in una struttura dati (d) void carica_fissi(void) { f = fopen(pathProg, "r"); // apre in modalità lettura il file del percorso pathProg if (f == 0) // se f è 0 --> l'operazione non ha avuto successo reset_fissi(); // resetta i valori dei dati fissi impostando quelli di default // (questa funzione è spiegata più avanti) fread(&d, sizeof(d), 1, f); // legge i valori dei dati fissi presenti nel file f e li carica nella struttura dati d fclose(f); // chiude il file f } // la seguente funzione prende i valori dei dati fissi caricati nella struttura dati d e li salva in un file char salva_fissi(void) { f = fopen(pathProg,"w"); // apre in modalità scrittura il file del percorso pathProg if (f == 0) // se f è 0 --> l'operazione non ha avuto successo return 0; // la funzione ritorna 0 //se f non è 0 fwrite(&d, sizeof(d), 1, f); // i valori dei dati fissi contenuti in d li salva in f // (modificando il file del percorso di pathProg) fclose(f); // chiude il file f return 1; // la funzione ritorna 1 } // Questa funzione resetta i valori dei dati fissi impostandoli su suoi valori di defaul e salvandoli void reset_fissi(void) { d.dato_fisso1 = 0; d.dato_fisso2 = 3; d.dato_fisso3 = 0; d.dato_fisso4 = 4; salva_fissi(); //salva i valori di default } Di seguito riportiamo anche **un esempio applicativo** reale commentato [Esempio reale](/howto/come_gestire_dati_fissi/esempio_reale)
Uploading file...
Edit message:
Cancel