HaleBopp12
08-04-2008, 18:48
Ciao a tutti,
ho creato queste due funzioni in C che permettono la lettura e la scrittura di un file binario. Sto sbattendo la testa da un'ora per un problema che non riesco a vedere. In pratica tutto funziona bene, finche' non viene letta la matrice. Solo i primi due valori vengono letti correttamente, mentre tutti gli altri non corrispondono. Potete darmi una mano?
Grazie mille!
:confused:
Davide.
PS: ecco il codice...
// write mapFile
int saveMap(char *mapfile)
{
int j,i;
FILE *optfile = fopen(mapfile,"w");
if ( optfile == NULL )
{
ERROR("Mapfile cannot be opened for reading...\n");
return 1;
}
// write gate voltages vector size
fwrite(&Vg_size, sizeof(double), 1, optfile);
// write gate voltages
fwrite(gate_voltages, sizeof(double), Vg_size, optfile);
// write drain voltages vector size
fwrite(&Vd_size, sizeof(double), 1, optfile);
// write drain voltages
fwrite(drain_voltages, sizeof(double), Vd_size, optfile);
// write current data
for(j=0; j<Vg_size; j++)
for(i=0; i<Vd_size; i++)
fwrite(¤ts[j][i], sizeof(double), 1, optfile);
fclose(optfile);
return 0;
}
// loads the mapFile
int loadMap(char *mapfile)
{
int i,j;
FILE *iptfile = fopen(mapfile,"r");
if ( iptfile == NULL )
{
ERROR("Mapfile cannot be opened for reading...\n");
}
// read gate voltages vector size
fread(&Vg_size, sizeof(double), 1, iptfile);
free_vector(gate_voltages);
gate_voltages = allocate_vector(Vg_size);
// read gate voltages
fread(gate_voltages, sizeof(double), Vg_size, iptfile);
// read drain voltages vector size
fread(&Vd_size, sizeof(double), 1, iptfile);
free_vector(drain_voltages);
drain_voltages = allocate_vector(Vd_size);
// read drain voltages
fread(drain_voltages, sizeof(double), Vd_size, iptfile);
free_matrix(currents, Vg_size);
// read current data
currents = allocate_matrix(Vg_size, Vd_size);
for(j=0; j<Vg_size; j++)
for(i=0; i<Vd_size; i++)
fread(¤ts[j][i], sizeof(double), 1, iptfile);
fclose(iptfile);
return 0;
}
ho creato queste due funzioni in C che permettono la lettura e la scrittura di un file binario. Sto sbattendo la testa da un'ora per un problema che non riesco a vedere. In pratica tutto funziona bene, finche' non viene letta la matrice. Solo i primi due valori vengono letti correttamente, mentre tutti gli altri non corrispondono. Potete darmi una mano?
Grazie mille!
:confused:
Davide.
PS: ecco il codice...
// write mapFile
int saveMap(char *mapfile)
{
int j,i;
FILE *optfile = fopen(mapfile,"w");
if ( optfile == NULL )
{
ERROR("Mapfile cannot be opened for reading...\n");
return 1;
}
// write gate voltages vector size
fwrite(&Vg_size, sizeof(double), 1, optfile);
// write gate voltages
fwrite(gate_voltages, sizeof(double), Vg_size, optfile);
// write drain voltages vector size
fwrite(&Vd_size, sizeof(double), 1, optfile);
// write drain voltages
fwrite(drain_voltages, sizeof(double), Vd_size, optfile);
// write current data
for(j=0; j<Vg_size; j++)
for(i=0; i<Vd_size; i++)
fwrite(¤ts[j][i], sizeof(double), 1, optfile);
fclose(optfile);
return 0;
}
// loads the mapFile
int loadMap(char *mapfile)
{
int i,j;
FILE *iptfile = fopen(mapfile,"r");
if ( iptfile == NULL )
{
ERROR("Mapfile cannot be opened for reading...\n");
}
// read gate voltages vector size
fread(&Vg_size, sizeof(double), 1, iptfile);
free_vector(gate_voltages);
gate_voltages = allocate_vector(Vg_size);
// read gate voltages
fread(gate_voltages, sizeof(double), Vg_size, iptfile);
// read drain voltages vector size
fread(&Vd_size, sizeof(double), 1, iptfile);
free_vector(drain_voltages);
drain_voltages = allocate_vector(Vd_size);
// read drain voltages
fread(drain_voltages, sizeof(double), Vd_size, iptfile);
free_matrix(currents, Vg_size);
// read current data
currents = allocate_matrix(Vg_size, Vd_size);
for(j=0; j<Vg_size; j++)
for(i=0; i<Vd_size; i++)
fread(¤ts[j][i], sizeof(double), 1, iptfile);
fclose(iptfile);
return 0;
}