Unrue
08-05-2008, 15:49
Ciao ragazzi,
ho un dubbio banale sulla fscanf. Ho scritto due colonne di valori floats in un file con "%8.2f %8.2f".
Rileggendoli allo stesso modo, mi va in sigfault. Se invece alla fscanf metto "%f %f" funziona tutto a dovere.
#define PI 3.14159265358979
#include <stdio.h>
#include <math.h>
#include <stdlib.h>
int main(int argc, char *argv[])
{
FILE *fp;
int punti,i,j;
float dominio[2];
float nuovo_punto, valore;
float point[200], value[200];
dominio[0]=0.0;
dominio[1]=PI;
fp=fopen("dati","r");
if(fp==NULL){
printf("Errore: impossibile aprire il file\n");
return 1;
}else{
i=0;
while(fscanf(fp,"%8.2f %8.2f",&nuovo_punto,&valore)!=EOF){
printf("%8.2f %8.2f\n",nuovo_punto,valore);
point[i]=nuovo_punto;
value[i]=valore;
i++;
}
fclose(fp);
fp=fopen("dati","w");
for(j=0;j<i;j++){
fprintf(fp,"%8.2f %8.2f\n",point[j]+PI,value[j]);
}
fclose(fp);
}
return 0;
}
Se scrivo e leggo allo stesso modo come mai non va? Grazie.
ho un dubbio banale sulla fscanf. Ho scritto due colonne di valori floats in un file con "%8.2f %8.2f".
Rileggendoli allo stesso modo, mi va in sigfault. Se invece alla fscanf metto "%f %f" funziona tutto a dovere.
#define PI 3.14159265358979
#include <stdio.h>
#include <math.h>
#include <stdlib.h>
int main(int argc, char *argv[])
{
FILE *fp;
int punti,i,j;
float dominio[2];
float nuovo_punto, valore;
float point[200], value[200];
dominio[0]=0.0;
dominio[1]=PI;
fp=fopen("dati","r");
if(fp==NULL){
printf("Errore: impossibile aprire il file\n");
return 1;
}else{
i=0;
while(fscanf(fp,"%8.2f %8.2f",&nuovo_punto,&valore)!=EOF){
printf("%8.2f %8.2f\n",nuovo_punto,valore);
point[i]=nuovo_punto;
value[i]=valore;
i++;
}
fclose(fp);
fp=fopen("dati","w");
for(j=0;j<i;j++){
fprintf(fp,"%8.2f %8.2f\n",point[j]+PI,value[j]);
}
fclose(fp);
}
return 0;
}
Se scrivo e leggo allo stesso modo come mai non va? Grazie.