PDA

View Full Version : [C] Problema char**


ciroshare
27-08-2007, 14:59
Ciao ho un problema banale di C ma che non riesco a risolvere.

Supponiao di avere questa dichiarazione:

char** s;

e di avere poi

char* s1="ciao";
char* s2="modo";

Io credevo di poter trattare char** s; come un array di puntatori a caratteri e quindi di stringhe e quindi di poter fare qualcosa del genere:

s[0] = s1;
s[1] = s2;

Ma questo da luogo a seg fault. Come devo fare allora per fare un assegnamento di quel genere.

P.S. scusate la banalita` ma sono nubbio :P

andbin
27-08-2007, 15:37
Supponiao di avere questa dichiarazione:

char** s;

e di avere poi

char* s1="ciao";
char* s2="modo";

Io credevo di poter trattare char** s; come un array di puntatori a caratteri e quindi di stringhe e quindi di poter fare qualcosa del genere:

s[0] = s1;
s[1] = s2;

Ma questo da luogo a seg fault. Come devo fare allora per fare un assegnamento di quel genere.Sì ma devi fare in modo che 's' faccia riferimento ad un array di puntatori a char.

char **s;

s = (char**) malloc (2 * sizeof (char*));

....
s[0] = .....
s[1] = ....

redcloud
27-08-2007, 16:06
Ti do una info trasversale (che a me avrebbe evitato notti insonni):

Quando allochi una stringa staticamente con

char *s1 = "CIAO";


non è possibile fare successive modifiche, per esempio con

s1[0] = 'M';


perchè la stringa creata staticamente viene trattata come una costante.

Con quest'altro tipo di allocazione invece non ci sono problemi

char s1[] = {'C', 'I', 'A', 'O', '\0'};

ciroshare
27-08-2007, 16:37
Grazie mille ad entrambi. Ora tutto funziona ;)