escribir matriz 2d en un archivo en C

Solía ​​usar el siguiente código para escribir una matriz 1D en 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 una matriz 2D.

preguntado el 09 de enero de 11 a las 09:01

2 Respuestas

Puede usar el mismo enfoque ... solo haga 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");
}

Tenga en cuenta, por supuesto, que esta no es la mejor manera de guardar / cargar datos, especialmente si desea tener alguna compatibilidad entre diferentes compiladores / sistemas o incluso solo con el futuro. El tema de guardar y restaurar a menudo se denomina serialization y con solo una pequeña sobrecarga menor, puede obtener mucha más flexibilidad, especialmente una vez que el modelo de datos se vuelve más complejo.

contestado el 11 de mayo de 20 a las 21:05

En lugar de un solo bucle for, agregará otro, por ejemplo:

for(i=0;i<lines;i++) {
for(j=0;j<num;j++) {
    fprintf(file,"%d ",array[i][j]);
}
fprintf(file,"\n");}

Respondido el 09 de enero de 11 a las 13:01

si bien este es un código razonable, el operador está buscando algo para escribir / leer la representación binaria de la matriz. - EvilTeach

No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas or haz tu propia pregunta.