Pregunta

Solía ??usar el código a continuación para escribir una matriz 1D a un archivo:

FILE *fp;
float floatValue[5] = { 1.1F, 2.2F, 3.3F, 4.4F, 5.5F };
int i;

if((fp=fopen("test", "wb"))==NULL) {
    printf("Cannot open file.\n");
}

if(fwrite(floatValue, sizeof(float), 5, fp) != 5)
    printf("File write error.");
fclose(fp);

/* read the values */
if((fp=fopen("test", "rb"))==NULL) {
    printf("Cannot open file.\n");
}

if(fread(floatValue, sizeof(float), 5, fp) != 5) {
    if(feof(fp))
        printf("Premature end of file.");
    else
        printf("File read error.");
}
fclose(fp);

for(i=0; i<5; i++)
    printf("%f ", floatValue[i]);

Mi pregunta es si quiero escribir y leer matriz 2D ??

¿Fue útil?

Solución

Se puede utilizar el mismo método ... sólo realiza los siguientes cambios

float floatValue[3][5] = {{ 1.1F, 2.2F, 3.3F, 4.4F, 5.5F },
                          { 6.6F, 7.7F, 8.8F, 9.9F, 8.8F },
                          { 7.7F, 6.6F, 5.5F, 4.4F, 3.3F }};
int i,j;

...

if(fwrite(floatValue, sizeof(float), 3*5, fp) != 3*5)

...

if(fread(floatValue, sizeof(float), 3*5, fp) != 3*5) {

...

for(j=0; j<3; j++) {
    for(i=0; i<5; i++)
        printf("%f ", floatValue[j][i]);
    printf("\n");
}

Nota por supuesto que esto no es la mejor manera de guardar / cargar datos especialmente si usted quiere tener cierta compatibilidad entre los diferentes sistemas de compiladores / o incluso sólo con el futuro. El tema de guardar y restaurar a menudo se denomina serialization y con sólo una muy pequeña menor sobrecarga se puede conseguir mucho más flexibilidad en especial una vez que el modelo de datos se vuelve más compleja.

Otros consejos

En lugar de un solo bucle va a agregar un otro ej .:

for(i=0;i<lines;i++) {
for(j=0;j<num;j++) {
    fprintf(file,"%d ",array[i][j]);
}
fprintf(file,"\n");}
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top