Come da topic, come si dichiara un array di stringhe?
char* stringa[] ?
O in qualche altro modo?
Avete una buona guida per le stringhe in C?
grazie
Come da topic, come si dichiara un array di stringhe?
char* stringa[] ?
O in qualche altro modo?
Avete una buona guida per le stringhe in C?
grazie
Un array di stringhe, in C, è un array di puntatori a carattere. Quindi va bene sia la tua dichiarazione, sia quella alternativa:
La prima vuole un dimensionamento costante, mentre la seconda è più adatta ai dimensionamenti dinamici.codice:char **mioArray;
Ciao.
"Perchè spendere anche solo 5 dollari per un S.O., quando posso averne uno gratis e spendere quei 5 dollari per 5 bottiglie di birra?" [Jon "maddog" Hall]
Fatti non foste a viver come bruti, ma per seguir virtute e canoscenza
Perfetto, grazie.Originariamente inviato da LeleFT
Un array di stringhe, in C, è un array di puntatori a carattere. Quindi va bene sia la tua dichiarazione, sia quella alternativa:
La prima vuole un dimensionamento costante, mentre la seconda è più adatta ai dimensionamenti dinamici.codice:char **mioArray;
Ciao.
Ora ho un altro problema:
le stringhe sono inizializzate a "/0" o devo farlo esplicitamente? A me sembra la seconda, ma non sono sicuro.
E poi:
come faccio a vedere se una stringa è nulla?
Sto provando qualcosa del tipo:
if ( strlen(mioArray[i]) == 0 )
oppure:
if ( strcmp(mioArray[i]) "\0" )
ma o ottengo l'errore "Segmentation fault" o non mi entra nell'if.
dichiarate in uno di quei due modi serve una malloc che alloca la memoria
se la avessi dichiarata così char a[1][2] (credo) che la inizializza il compilatore
Come faccio a sapere le dimensioni? O meglio come faccio a sapere la dimensione di ogni singola stringa (il numero totale delle stringhe è fisso invece)?Originariamente inviato da floyd
dichiarate in uno di quei due modi serve una malloc che alloca la memoria
se la avessi dichiarata così char a[1][2] (credo) che la inizializza il compilatore
char *s[] se la dichiari con * non ha una dimensione
devi deciderla tu
scusate una cosa... ma per dichiarare una stringa statica fai:
char stringa[]
per una stringa dinamica:
char *stringa;
stringa = (char *)calloc(n+1,sizeof(char))
(dovrebbe andare bene anke: stringa = (char *)malloc(n+1))
dove n è la lunghezza massima. il +1 è per il carattere null finale '\0';
cmq, in entrambi i casi mi pare ke la devi inizializzare tu...
per vedere se una stringa è vuota puoi fare:
codice:if (stringa[0] == '\0')
le uniche variabili che si autoinizializzano a zero dovrebbero essere quelle globali e quelle statiche, spero di non aver detto una vaccata
*********************************
Andrea
*********************************
Se intendi scrivere una frase e il programma deve vedere di quanti caratteri è composta la frase (la stringa) potresti utilizzare una funzione e nella definizione di questa mettere un bel for:Come faccio a sapere le dimensioni?
int i;
for(i=0;stringa[i]!='\0';i++);
return i;
usi strlen() che puoi usare anche nella malloc per la dimensione della stringa da allocare...Originariamente inviato da kylnas1
Come faccio a sapere le dimensioni? O meglio come faccio a sapere la dimensione di ogni singola stringa (il numero totale delle stringhe è fisso invece)?
Chi di noi non vorrebbe
sollevare il velo sotto cui sta nascosto il
futuro...
David Hilbert