8e3b8ea59eaf17af3a8c75af02c016000c1fa1f4
howto/come_gestire_dati_fissi.md
... | ... | @@ -6,8 +6,78 @@ All'interno dello stesso file .h vado anche a definire le **funzioni** e le **va |
6 | 6 | |
7 | 7 | Esempio: |
8 | 8 | |
9 | - |
|
9 | + // dichiaro le funzioni per eseguire le operazioni con i dati fissi |
|
10 | + void carica_fissi(void); |
|
11 | + char salva_fissi(void); |
|
12 | + void reset_fissi(void); |
|
10 | 13 | |
11 | -Di seguito riportiamo anche un esempio reale commentato |
|
14 | + |
|
15 | + char pathProg[32] = "C:\\prog.fissi"; // viene dichiarato un array |
|
16 | + // relativo al file |
|
17 | + // da cui prendere i dati fissi |
|
18 | + |
|
19 | + |
|
20 | + // definisco un tipo di struttura chiamata dati_fissi |
|
21 | + // e dichiaro i nomi dei dati |
|
22 | + typedef struct dati_fissi |
|
23 | + { |
|
24 | + unsigned char dato_fisso1; |
|
25 | + unsigned char dato_fisso2; |
|
26 | + unsigned char dato_fisso3; |
|
27 | + long int dato_fisso4; |
|
28 | + } |
|
29 | + |
|
30 | + dati_fissi d; // viene dichiarata una |
|
31 | + // struttura dati d |
|
32 | + |
|
33 | + FILE *f //viene dichiarato un file f |
|
34 | + //che ci servirà nelle funzioni |
|
35 | + |
|
36 | + |
|
37 | + // Questa funzione prende i valori dei dati fissi da un file |
|
38 | + // e li carica in una struttura dati (d) |
|
39 | + void carica_fissi(void) |
|
40 | + { |
|
41 | + f = fopen(pathProg, "r"); // apre in modalità lettura pathProg e lo mette in f |
|
42 | + |
|
43 | + if (f == 0) // se f è 0 --> l'operazione non ha avuto successo |
|
44 | + reset_fissi(); // resetta i valori dei dati fissi impostando quelli di default |
|
45 | + // (questa funzione è spiegata più avanti) |
|
46 | + |
|
47 | + fread(&d, sizeof(d), 1, f); // legge i valori dei dati fissi presenti nel |
|
48 | + // file f e li carica nella struttura dati d |
|
49 | + |
|
50 | + fclose(f); // chiude il file f |
|
51 | + } |
|
52 | + |
|
53 | + // Questa funzione prende i valori dei dati fissi caricati nella struttura dati d |
|
54 | + // e li salva nel file f se l'apertura in modalità scrittura del file pathProg ha successo |
|
55 | + char salva_fissi(void) |
|
56 | + { |
|
57 | + f = fopen(pathProg,"w"); // apre in modalità scrittura pathProg e lo mette in f |
|
58 | + |
|
59 | + if (f == 0) // se f è 0 --> l'operazione non ha avuto successo |
|
60 | + return 0; // la funzione ritorna 0 |
|
61 | + |
|
62 | + //se f non è 0 |
|
63 | + fwrite(&d, sizeof(d), 1, f); // i valori dei dati fissi contenuti in d li salva nel |
|
64 | + // file f |
|
65 | + |
|
66 | + fclose(f); // chiude il file f |
|
67 | + return 1; // la funzione ritorna 1 |
|
68 | + } |
|
69 | + |
|
70 | + // Questa funzione resetta i valori dei dati fissi impostandoli su suoi valori di default |
|
71 | + void reset_fissi(void) |
|
72 | + { |
|
73 | + d.dato_fisso1 = 0; |
|
74 | + d.dato_fisso2 = 3; |
|
75 | + d.dato_fisso3 = 0; |
|
76 | + d.dato_fisso4 = 4; |
|
77 | + |
|
78 | + salva_fissiRic(); //salva i valori di default |
|
79 | + } |
|
80 | + |
|
81 | +Di seguito riportiamo anche un esempio applicativo reale commentato |
|
12 | 82 | |
13 | 83 | [Esempio reale](/howto/come_gestire_dati_fissi/esempio_reale) |
... | ... | \ No newline at end of file |