PDA

View Full Version : [c] - realloc per stringhe


ilgrigio
02-07-2006, 13:33
Salve gente, ho bisogno di un aiuto!!

Ho allocato memoria per una stringa
char *pippo = (char*)malloc(n_caratteri*sizeof(char));
strcpy(pippo,"stringa di partenza");
se ora volessi inserire tra 'stringa' e 'di' un'altra parola devo riallocare spazio? riallocando ho avuto problemi :
pippo = realloc(pippo,n_caratteri+nuovi_caratteri);
ovvero mi stampa caratteri strani.
Se invece uso direttamente memmove per spostare 'di partenza' e poi uso memcpy per copiare la nuova parola, senza riallocare funziona.

Spero di essermi spiegato
grazie a tutti

andbin
02-07-2006, 16:12
Eccoti un esempio:
int n_caratteri;
char *pippo;

n_caratteri = 20;
pippo = (char*) malloc (n_caratteri * sizeof (char));

strcpy (pippo, "stringa di partenza");

printf ("%s\n", pippo);

n_caratteri += 6;
pippo = (char*) realloc (pippo, n_caratteri * sizeof (char));

memmove (&pippo[8+6], &pippo[8], strlen (&pippo[8])+1);
strncpy (&pippo[8], "prova ", 6);

printf ("%s\n", pippo);

free (pippo);Stampa:
stringa di partenza
stringa prova di partenza