Salve
mi potreste aiutare a trovare l'errore di segmentazione in questo programma?
Non so se il problema è dovuto alla realloc...
Grazie
codice:
#include <stdio.h>
#include <stdlib.h>
#define DIM 5
/*Realizzare un programma che permetta di memorizzare i voti di una disciplina.
Non conoscendo a priori la quantita' di valutazioni il programma inizialmente allochera'
in modo dinamico lo spazio sufficiente per 5 voti.
Successivamente, quando lo spazio si esaurira', verra' allungato lo spazio precedente
in modo da poter inserire altre 5 valutazioni. */
main(){
int cont=0,n=0,continua=1;
int *ptrvoti=NULL,*app=NULL;
ptrvoti = (int*)malloc(sizeof(int)*5);
if(ptrvoti==NULL){
printf("ERRORE\n");
return;
}
app=ptrvoti;
while(cont<DIM && continua==1){
printf("Vuoi continuare ad inserire voti? (1 per continuare, 0 per terminare) \n");
scanf("%d", & continua);
if(continua==1){
printf("inserisci voto \n");
scanf("%d", ptrvoti);
n++;
ptrvoti++;
}
else if(continua==0){
break;
}
else{
printf("ERRORE\n");
return;
}
if(n==5){
ptrvoti = (int*)realloc(ptrvoti,sizeof(int)*(5+DIM));
cont=0;
}
cont++;
}
ptrvoti=app;
for(cont=0;cont<n;cont++){
printf("%d ", *ptrvoti);
ptrvoti++;
}
}