Salve! Non mi sembra di aver visto la sezione delle presentazioni quindi nel caso mi scuso in anticipo 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?
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));
}