Oppure

Loading
04/07/13 14:01
sd
devo acquisire una stringa di lunghezza non nota e metterla in un array di stringhe, io ho provato così ma ho un errore di segmentazione:

char *string, *arr[3];
scanf("%s", string);
arr[0]=string;


come posso fare ad acquisire una stringa di lunghezza non nota e metterla in un array di stringhe?
devo passare per forza dalla malloc e realloc o c'è un altro modo per non utilizzare altre librerie?
Ultima modifica effettuata da sd 04/07/13 14:01
aaa
04/07/13 14:51
ZioCrocifisso
Ti ho già spiegato nell'altro topic che non puoi passare un semplice puntatore a scanf perché non gli dice dove mettere i dati.
Se la stringa non è troppo grande alloca un stringa con char string[1024] per esempio (lunghezza massima 1024 caratteri), e poi usa un loop con getchar, controllando sempre che non hai superato i 1024 caratteri. Oppure, al posto del loop con getchar, usa scanf mettendo però %1024s al posto di %s (questo ti impedisce di avere degli spazi nella stringa però;).
aaa
04/07/13 16:05
moloskovic
Quoto ZioCrocifisso. In più le stringhe non possono essere sottoposte ad assegnazione come hai fatto tu.
Innanzitutto, se non erro, dichiarando char *arr[3] ti viene allocato un array di 3 puntatori a carattere, che ti è inutile. Al massimo potresti fare arr[1024][3]. Puoi anche sostituire 1024 con un altro numero o con una costante a patto che sia uguale alla capienza di string.
Per assegnare una stringa si usa la libreria <string.h> e la funzione strcpy(char * destinazione, char * sorgente), nel tuo caso strcpy(arr[0],string) al posto di arr[0]=string.
aaa
04/07/13 16:42
sd
vaaaa bene! Grazie ancora ;)
aaa