Edit
Mi sto incasinando, non capisco perchč questo codice non funzioni, si blocca alla prima iterazione del ciclo while sul comando indicato nel codice. Tutta la lettura e scrittura del file funziona bene.
Credo sia una questione di allocazione della memoria.
Codice:
int main(int argc, char *argv[])
{
FILE *source, *dest;
int lettera=0, prec=0, readed=0;
int buffer[10];
int count=1, i=0, j=0;
char *parola;
source=fopen("c:\\files.txt", "r");
dest=fopen("c:\\filed.txt", "w");
readed=fread(buffer, 1, sizeof(char), source);
while (readed>0)
{
/*leggo una lettera*/
lettera=buffer[0];
printf("%c", lettera);
scrivi_lettera(lettera, buffer, &dest);//funzionante giā testata
readed=fread(buffer, 1, sizeof(char), source);
if((char)lettera==' ' || readed==0)
{
printf("\n parola letta:");
for(j=0;j<i;j++)
{
printf("%c", parola[j]);
}
printf("\n\n");
i=0;
free(parola);
}
if(lettera!=' ')
{
//allocazione dello spazio per contenere la lettera appena letta
parola = (char *)realloc(parola, (i+1)*sizeof(char));
//memorizzazione della lettera che andrā a comporre la parola
parola[i]=lettera; //SI BLOCCA QUI CREDO SIA UN PROBLEMA COLLEGATO ALLA REALLOC PRECEDENTE
printf("%c", parola[i]);
//incremento del contatore delle lettere che formano una parola
i++;
}
fclose(source);
fclose(dest);
getchar();
}
Mentre questo che č un programma di prova che ho fatto funziona bene:
Codice:
int main(int argc, char *argv[])
{
char a[4]={'a','b','c','d'};
char *p=NULL;
int i=0, j=0;
int lettera='a';
while(i<4)
{
p = (char *)realloc(p, (i+1)*sizeof(char));
p[i]=lettera;
printf("%c", p[i]);
printf("\n");
i++;
lettera++;
}
printf("\n");
for(j=0;j<i;j++)
{
printf("%c", p[j]);
printf("\n");
}
getchar();
}
Il secondo stampa a video "abcd" due volte come volevo che facesse.