Salve a tutti e grazie in anticipo del vostro aiuto. sono nuovissimo nel mondo della programmazione e il c è il primo linguaggio che vorrei imparare, per questo vorrei chiedervi di sopportare la mia ignoranza sul campo.
comunque, nel programma i cui ho riscontrato il problema avevo intenzione di migliorare il mio uso della "realloc", per farlo volevo creare un programma che leggesse un valore int da tastiera per creare determinati elementi, su qui scrivere diversi numeri, in un array. in seguito avevo intenzione di aggiungere altri elementi all'array aumentando lo spazio in memoria con la realloc e penso di esserci anche riuscito il problema è che dopo aver inserito i primi elementi dell'array domando se voglio aggiungerne altri rispondendo con un semplice y o n ma arrivati a questo punto il programma salta lo scanf chiudendo subito il programma. perciò per pura curiosità volevo sapere dove ho sbagliato (nello spazio di memoria?) e se potevate aiutarmi a correggere questo sbaglio.
ecco il codice:
#include <stdio.h>
#include <stdlib.h>
int main() {
int n,m;
int l=n+m;
int i,j,k,x;
double *v;
char a;
printf("-quante sequenze di numeri desideri inserire?\n-");
scanf("%d",&n);
v = (double *) malloc(n*sizeof(int));
for(i=0;i<n;i++) {
printf("\n-elemento n* %d:",i+1);
scanf("%lf",&v[i]);
}
printf("\n~elementi inseriti finora:\n");
for(j=0;j<n;j++) {
printf("-%lf\n",v[j]);
}
printf("\n-si desidera aggiungere altri elementi alla sequenza?(Y/N)\n-");
scanf("%c",&a);
if(a=='Y') {
printf("\n-quanti altri elementi si desidera inserire?\n-");
scanf("%d",&m);
v = (double *) realloc(v,l*sizeof(double));
for(k=n;k<l;k++) {
printf("\n-elemento n*%d:",n+1);
scanf("%lf",&v[n]);
}
printf("\n~elementi inseriti attualmente:\n");
for(x=0;x<l;x++) {
printf("-%lf",v[x]);
}
printf("\nARRIVEDERCI!\n");
}else{
printf("\n\n ARRIVEDERCI!\n");
}
free(v);
return 0;
}
[code]