Newsgroup: it.comp.lang.c
Titolo: Lista di array di stringhe costanti

Ho bisogno di una lista di elenchi di stringhe. Il numero di stringhe
per ogni elenco non è fisso.
Tutte le stringhe sono costanti e devono essere inizializzate in C.
Devo poi accedere a queste stringhe mediante un numero, l'indice
all'interno della lista. Ora faccio così:
  const char *const mesi[] = { "Gennaio", "Febbraio", "Marzo", ... };
  const char *const giorni[] = { "Lunedì", "Martedì",
"Mercoledì", ,,, };
  const char *const dita[] = { "Pollice", "Indice", "Medio", ... };
  const char *const *const str_list[] = {
    mesi,
    giorni,
    dita,
  };
Naturalmente i nomi non sono quelli.
Ho bisogno anche di dare un nome mnemonico all'indice della lista,
altrimenti non ci capisco molto. Allora scrivo:
  enum idx{
    MESI,
    GIORNI,
    DITA
  };
Se la lista è molto lunga, diventa difficile da manutenere in quanto
l'ordine nella lista deve corrispondere all'ordine
dell'enum. Ci sarebbe un altro modo più raffinato per gestire la cosa?
Alla fine, quello che mi serve è accedere ad una delle stringhe in
questo modo:
  printf( "%s\n", str_list[MESI][3] );

 dell'enum. Ci sarebbe un altro modo piů raffinato per gestire la cosa?
enum idx{
      MESI=0,
      GIORNI=1,
      DITA=2
    };
E.

Newsgroup: it.comp.lang.c
Titolo: Array di dimensioni variabili

E' possibile dichiarare un Array GLOBALE la cui dimensione č data come
parametro in ingresso o letta da file?
Ho una tabella utilizzata si e no in tutto il sorgente del mio
programma, e quindi devo dichiararla globalmente, la cui dimensione non
varia durante l' esecuzione, ma vorrei che la dimensione iniziale fosse
letta da un file di inizializzazione e non determinata staticamente in
fase di compilazione. E' possibile?
(per array locali, all' interno di funzioni etc etc, funziona, a
dispetto di quello che ho letto nel manuale Borland, che dice che non si
puň passare come dimensione dell' array il nome di una variabile).
grazie
Mat

Puoi fare cos?:
/*
**  Inizio codice.
*/
#include <stdlib.h>
int *vettore;
...............
int main (void)
{
 .......................
 /* prendi la dimensione dal file e la scrivi in una variabile, diciamo ad
esempio una variabile int di nome n. */
 vettore = (int*) malloc (n * sizeof (int));
/* in alternativa puoi usare:
   vettore = (int*) calloc (n, sizeof (int));
  il risultato ? lo stesso. */
 .....................
}
/*
**  Fine codice.
*/
La sintassi di malloc e calloc ?:
void* malloc (size_t s);
void* calloc (size_t n, size_t s);
Per la malloc s ? la quantit? di memoria da allocare, quindi ? pari a:
numero di elementi del vettore * dimensione del singolo elemento (ottenibile
come sizeof (tipo elemento)).
Per la calloc ? lo stesso, ma i due parametri sono separati. Spero di averti
aiutato. Ciao
                                    Marchisio Stefano

Molto, grazie.Vado subito a provare questi nuovi giochini (malloc
calloc....)!
Mat


Newsgroup: it.comp.lang.c
Titolo: Ansi C

Ciao, sapreste dirmi dove posso trovare le specifiche Ansi del C?
Grazie.

Ciao, sapreste dirmi dove posso trovare le specifiche Ansi del C?
Si acquistano dal comitato ANSI.
Sulle faq di comp.lang.c c'e' l'indirizzo.