Questo sito utilizza cookies solo per scopi di autenticazione sul sito e nient'altro. Nessuna informazione personale viene tracciata. 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.    }


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.

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

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
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' :)

PM Quote