- Codice:
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
typedef struct {
double m;
double x, y;
double vx, vy;
} particle;
int main () {
FILE * dat;
dat=fopen("lj3.dat", "r");
int N;
int i;
particle p[N];
fscanf(dat, "%d", &N);
// p = calloc(N, sizeof(particle));
double m, x, y, vx, vy;
for (i=0; i<N; i++) {
fscanf(dat, "%f %f %f %f %f", &m, &x, &y, &vx, &vy);
p[i].m=m;
p[i].x=x;
p[i].y=y;
p[i].vx=vx;
p[i].vy=vy;
}
printf("%d\n", N);
for (i=0; i<N; i++) {
printf("%f %f %f %f %f\n", p[i].m, p[i].x, p[i].y, p[i].vx, p[i].vy);
}
fclose(dat);
return(0);
}
con le righe di stampa vedo che viene preso correttamente il valore di N, ma per tutti gli altri N * 5 valori viene stampato uno 0. Credo che il problema sia nell'utilizzo di fscanf, ma non capisco dove; ho anche provato a sostituire l'utilizzo delle variabili temporanee con fscanf(dat, "%f %f %f %f %f", &(p[i].m), &(p[i].x), &(p[i].y), &(p[i].vx), &(p[i].vy));
ma non cambia niente.
Grazie a chi vorrà aiutarmi