01: // array di stringhe mediante array bidimensionale
02: #include<stdio.h>
03: #include<stdlib.h>
04: 
05: #include<string.h>
06: 
07: int main(int argc, char **argv){
08: 
09:   char incipit[] = 
10: "Nel mezzo del cammin di nostra vita   \
11: mi ritrovai per una selva oscura:      \
12: che la diritta via era smarrita.       \
13: E quanto a dir qual era e cosa dura    \
14: esta selva selvaggia et aspra e forte, \
15: che nel pensier rinova la paura!";
16:   char delimitatori[]= " :.,;'!+-";
17:   char *word;
18: 
19: 
20:   // un array bidimensionale puo' essere usato per memorizzare tante stringhe
21:   // devo:
22:   // 1. dimensionare quante stringhe devo gestire
23:   // 2. dimensionare la massima lunghezza che devo gestire per una stringa
24: 
25:   char str_array[100][25];   // con questo array posso memorizzare fino a 100 stringhe di massimo 24 caratteri
26: 
27:   int i;
28:   word = strtok(incipit, delimitatori);
29:   for(i=0; word && i<100; ++i) // mi fermo se finisco con strtok o se raggiungo massimo numero di stringhe
30:   {
31:     // NUOVO ELEMENTO: nel caso di array bidimensionali se ometto il secondo indice ho l'indirizzo della riga
32:     strcpy(str_array[i], word); // man mano che ho una parola la ricopio nella posizione giusta nell'array
33: 
34:     word = strtok(NULL, delimitatori);
35:   }
36: 
37:   // alla fine di questo ciclo, i contiene il numero di stringhe memorizzato
38:   printf("Ho memorizzato nell'array bidimensionale n. %d stringhe\n", i);
39: 
40:   int mem_used = 0;
41:   for(int j=0; j<i; ++j)
42:   { 
43:     printf("#%d \t %s\n", j, str_array[j]);
44:     mem_used += strlen(str_array[j]) + 1;
45:   }
46: 
47:   printf("Per memorizzare le stringhe ho usato un array che occupa %ld byte di memoria. ma ne bastavano %d\n", sizeof(str_array), mem_used);
48: 
49:   return 0;
50: }
51: 
52: 


Se avete commenti o osservaƶioni su questa pagina
mandate un messaggio di posta elettronica a bertoƶƶi@ce.unipr.it