Oppure

Loading
06/06/07 9:12
buffalo_overflw
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 :)
stringa=(char*)calloc(1,sizeof(char));

for (indice=0;
    ((car !=EOF));
    indice++, car=getc(filetesto))
   {
     stringa=realloc(stringa,sizeof(char));
     stringa[lettura]=car;
   }
aaa
08/06/07 14:12
lorelapo
char *stringa=(char*)calloc(1,sizeof(char));

for (indice=0;
((car !=EOF));
indice++, car=getc(filetesto))
{
stringa=realloc(stringa,_msize(stringa)+1);
stringa[lettura]=car;
} 

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.
aaa
08/06/07 21:23
buffalo_overflw
{
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
aaa
10/06/07 8:05
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
Ultima modifica effettuata da lorelapo 10/06/07 8:10
aaa
10/06/07 21:51
buffalo_overflw
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' :)
aaa