Realloc [C]

Linguaggi di programmazione: php, perl, python, C, bash e tutti gli altri.
Aegis80
Prode Principiante
Messaggi: 66
Iscrizione: venerdì 1 giugno 2007, 13:24

Realloc [C]

Messaggio da Aegis80 »

Ragazzi per la prima volta sto utilizzando la realloc con non pochi problemi.. Spero possiate aiutarmi !!!
Allego a seguito la parte di codice che mi crea problemi ....

Codice: Seleziona tutto

 while(!feof(ifp))
   {
     if (sw==0)
       per=calloc(1,sizeof(agenda));
     if (per==NULL)
       {
	 perror("errore nella realloc\n");
	 exit(-1);
       }
     else
       {
	 per=realloc(per,sizeof(agenda));
	 if (per==NULL)
	   {
	     perror("errore nella realloc\n");
	     exit(-1);
	   }
       }
     sw=1;
Praticamente vorrei creare un array dinamico di strutture agenda e allocare un nuovo elemento ogni volta che leggo da file un nuovo appuntamento.
Quindi nel codice alloco lo spazio per una struttura agenda e poi man mano che leggo vorrei allocare un nuovo posto per un nuovo elemento.

Evidentemente sbaglio qualcosa nella sintassi della realloc ma non so dove... Sapete aiutarmi?
Dahman
Entusiasta Emergente
Entusiasta Emergente
Messaggi: 1013
Iscrizione: mercoledì 31 ottobre 2007, 8:29
Località: Torino

Re: Realloc [C]

Messaggio da Dahman »

L'errore ce l'hai durante la compilazione o durante l'esecuzione? che tipo di errore?
Che tipo di variabile é il puntatore per?

Ciao

dahman

edit: tieni presente che realloc deve avere un size pari alla nuova dimensione che deve avere il tuo blocco di memoria.
Faccendo realloc(per, sizeof(agenda)) in pratica stai ripetendo sempre la stessa operazione, ossia allocare uno spazio sufficiente per una sola agenda.
Dovresti fare realloc(per, nuovo_numero_agende*sizeof(agenda)), dove nuovo_numero_agende va aumentato di uno ogni volta che carichi dal file una nuova agenda.
Ultima modifica di Dahman il giovedì 25 settembre 2008, 14:06, modificato 1 volta in totale.
Avatar utente
bite
Imperturbabile Insigne
Imperturbabile Insigne
Messaggi: 3798
Iscrizione: sabato 19 maggio 2007, 22:10

Re: Realloc [C]

Messaggio da bite »

Beh, ci stai dicendo veramente poco.

Resta il dubbio che roba sia 'agenda', immagino una struttura. Ma allora che gusto c'è a riallocarla sempre della stessa dimensione?
Scrivi risposta

Ritorna a “Programmazione”

Chi c’è in linea

Visualizzano questa sezione: 0 utenti iscritti e 2 ospiti