Buongiorno a tutti,
sto implementando un codice in C++ in cui ad un certo punto utilizzo la funzione sprintf() e, per un motivo che mi è completamente oscuro, una variabile che non dovrebbe c'entrare nulla con la funzione cambia il suo valore iniziale in un numero enorme; con questo codice:
stampando a schermo la variabile Q[0].h ha valore 8.0 come è giusto che sia, se invece modifico il codice in questo modo,codice:[...] x[0]=xL; // prima casella del vettore x ha il valore xL for(i=1;i<IMAX;i++) { x[i]=x[i-1]+dx; } if(x[IMAX-1]>xR) //se valore x[IMAX] supera il limite destro x[IMAX]=xR {x[IMAX-1]=xR;} hL=8.0; hR=0.8; uL=0.0; uR=0.0; pf1=fopen("dati_iniz_U.txt","w"); for(i=0;i<IMAX;i++) //inizializzo Q con le condizioni iniziali { if(x[i]<=0) { Q[i].h=hL; Q[i].u=uL; } else { Q[i].h=hR; Q[i].u=uR; } fprintf(pf1,"%d %f\n", i, Q[i].h); } fclose(pf1); char nome[6]; for(j=0;j<=NMAX;j++) { if(j==0) {printf("%f\n", Q[0].h);} sprintf(nome,"[...]/dati_u%d.txt",j); pf1=fopen(nome,"w"); //apro file in scrittura if (pf1==NULL) { printf("ERRORE creazione file"); system("PAUSE"); return 1; } [...]
mettendocodice:for(j=0;j<=NMAX;j++) { sprintf(nome,"[...]/dati_u%d.txt",j); if(j==0) {printf("%f\n", Q[0].h);} pf1=fopen(nome,"w"); //apro file in scrittura
dopo la sprintfcodice:if(j==0) {printf("%f\n", Q[0].h);}
il valore della variabile stampato a schermo è un numero a 20 zeri...
non capisco il motivo di questa cosa...
vi sarei grato se mi seste una mano
grazie

Rispondi quotando
