Salve! Non mi sembra di aver visto la sezione delle presentazioni quindi nel caso mi scuso in anticiposto cercando di risolvere un esercizio che prevede l'inserimento da tastiera di linee e la loro concatenazione. Il problema sta quando vado a riallocare temp nel main la seconda volta. Non riesco a capire dove sbaglio. Qualcuno potrebbe illuminarmi?
codice:#include <stdlib.h>#include <stdio.h> #include <string.h> int const DIM=20; void fillS(char*, int); int main(int argc, char *argv[]){ char *str, *temp, c; int dim=DIM, dimS; str=(char*)malloc(dim*sizeof(char)); *str='\0'; temp=(char*)malloc(dim*sizeof(char)); while(1){ printf("Vuoi inserire una nuova stringa?"); if((c=getchar())!='y') break; fflush(stdin); fillS(temp, dim); printf("temp: %s\n", temp); dimS+=(strlen(temp)+1); str=(char*)realloc(str, dimS*sizeof(char)); strcat(str, temp); printf("str: %s\n", str); strcat(str, " "); } printf("Il risultato e':\n%s\n", str); } void fillS(char *str, int dim){ int i=0; char c; while((c=getchar())!='\n'){ if(i==dim){ str=(char*)realloc(str, (dim+=dim)*sizeof(char)); printf("controllo\n"); } *(str+i)=c; i++; } *(str+i)='\0'; str=(char*)realloc(str, (strlen(str)+1)*sizeof(char)); }

sto cercando di risolvere un esercizio che prevede l'inserimento da tastiera di linee e la loro concatenazione. Il problema sta quando vado a riallocare temp nel main la seconda volta. Non riesco a capire dove sbaglio. Qualcuno potrebbe illuminarmi?
Rispondi quotando
