Questo sito utilizza cookies, anche di terze parti, per mostrare pubblicità e servizi in linea con il tuo account. Leggi l'informativa sui cookies.
Username: Password: oppure
C/C++ - Realloc su array stringa
Forum - C/C++ - Realloc su array stringa

Avatar
buffalo_overflw (Normal User)
Newbie


Messaggi: 6
Iscritto: 29/05/2007

Segnala al moderatore
Postato alle 11:12
Mercoledì, 06/06/2007
Ciao a tutti, sto implementando un programma Ansi C che legge caratteri da un file di testo e li inserisce in un array stringa dinamico, che quindi si "ridimensiona" in base alla lunghezza dell'input. Quindi all'inizio dimensiono la stringa con calloc ad 1, poi, man mano che la getc() legge un carattere, ridimensiono l'array aumentandolo di un carattere; pero' sbaglio qualcosa perche' mi va in errore 'invalid next size' di seguito posto il codice che ho scritto, grazie in anticipo per glie ventuali consigli :)
Codice sorgente - presumibilmente C/C++

  1. stringa=(char*)calloc(1,sizeof(char));
  2.  
  3. for (indice=0;
  4.     ((car !=EOF));
  5.     indice++, car=getc(filetesto))
  6.    {
  7.      stringa=realloc(stringa,sizeof(char));
  8.      stringa[lettura]=car;
  9.    }



You can leave your [red] hat on...
PM Quote
Avatar
lorelapo (Ex-Member)
Expert


Messaggi: 355
Iscritto: 28/02/2007

Segnala al moderatore
Postato alle 16:12
Venerdì, 08/06/2007
Codice sorgente - presumibilmente C/C++

  1. char *stringa=(char*)calloc(1,sizeof(char));
  2.  
  3. for (indice=0;
  4. ((car !=EOF));
  5. indice++, car=getc(filetesto))
  6. {
  7. stringa=realloc(stringa,_msize(stringa)+1);
  8. stringa[lettura]=car;
  9. }


Stavi tentando di ridimensionare l'array alla sua stessa dimensione, questo invece aumenta di un elemento l'array ad ogni ciclo di lettura sto implementando una cosa di simile per un programma.


☠ B☮Rn T☮ KiLl! ☮ ¡ HeLp ! ¡ hElP ! ¡ HeLp Me ! ¡ wAnT yOu PlEaSe HeLp Me ? !

Linux Registered User #470459
PM Quote
Avatar
buffalo_overflw (Normal User)
Newbie


Messaggi: 6
Iscritto: 29/05/2007

Segnala al moderatore
Postato alle 23:23
Venerdì, 08/06/2007
Testo quotato


{
stringa=realloc(stringa,_msize(stringa)+1);
stringa[lettura]=car;
}




Grazie mille dell'indicazione... solo che mi restituisce errore 'undifined reference' su _msize... non so come va inizializzato


You can leave your [red] hat on...
PM Quote
Avatar
lorelapo (Ex-Member)
Expert


Messaggi: 355
Iscritto: 28/02/2007

Segnala al moderatore
Postato alle 10:05
Domenica, 10/06/2007
includi anche <malloc.h>

ps.:non sò se il tuo compilatore ha queste funzioni, io uso il gcc con il DevCpp come ambiente lo scarichi qui dal sito nella sezione compilatori

Ultima modifica effettuata da lorelapo il 10/06/2007 alle 10:10


☠ B☮Rn T☮ KiLl! ☮ ¡ HeLp ! ¡ hElP ! ¡ HeLp Me ! ¡ wAnT yOu PlEaSe HeLp Me ? !

Linux Registered User #470459
PM Quote
Avatar
buffalo_overflw (Normal User)
Newbie


Messaggi: 6
Iscritto: 29/05/2007

Segnala al moderatore
Postato alle 23:51
Domenica, 10/06/2007
Testo quotato

Postato originariamente da lorelapo:

includi anche <malloc.h>

ps.:non sò se il tuo compilatore ha queste funzioni, io uso il gcc con il DevCpp come ambiente lo scarichi qui dal sito nella sezione compilatori



Anch'io uso il gcc (per Ansi C) in ambiente linux kubuntu... e nonostante abbia incluso anche malloc.h mi continua a restituire errore.. sicuramente sbaglio qualcosa. Grazie comunque della disponibilita' :)


You can leave your [red] hat on...
PM Quote