¿Cómo escribo una matriz de valores y[7990272] en un archivo de texto con 2448 valores en cada fila del texto?

¿Cómo escribo una matriz de valores y[7990272] en un archivo de texto (abierto con el fopen() función) en un orden de 2448x3264 (por lo que cada fila en el archivo de texto tiene 2448 valores).

FILE *fp;

fp=fopen("output.txt","w");

for(int i=0;i<7990272;i++)
{
    fprintf(fp,"%f\n",y[i]);
}
fclose(fp);

preguntado el 26 de agosto de 12 a las 18:08

2 Respuestas

for (int i = 0; i < 3264; i++)
{
    for (int j = 0; j < 2448; j++)
        fprintf(fp, "%f", y[i*2448+j]);
    putc('\n', fp);
}

El problema residual es que no habrá espacios entre los números tal como están escritos. Hay varias formas de manejar eso; Usualmente uso una variación de:

for (int i = 0; i < 3264; i++)
{
    const char *pad = "";
    for (int j = 0; j < 2448; j++)
    {
        fprintf(fp, "%s%f", pad, y[i*2448+j]);
        pad = " ";
    }
    putc('\n', fp);
}

Si no le gusta volver a calcular el subíndice de la matriz, puede mantener otra variable que simplemente se incremente monótonamente:

index = 0;
for (int i = 0; i < 3264; i++)
{
    const char *pad = "";
    for (int j = 0; j < 2448; j++)
    {
        fprintf(fp, "%s%f", pad, y[index++]);
        pad = " ";
    }
    putc('\n', fp);
}

Respondido 26 ago 12, 18:08

¡Gracias chicos! Estoy ordenado ahora con estos códigos. En verdad lo aprecio - jomizu

mantener un contador para rastrear los valores escritos en cada línea de la siguiente manera?

FILE *fp;

fp=fopen("output.txt","w");

const int NUM_VALUES_PER_LINE = 2448;
int count = 0;
for(int i=0;i<7990272;i++)
{
    fprintf(fp,"%f ",y[i]);
    count++;
    if (count == NUM_VALUES_PER_LINE)
    {
        fprintf(fp, "\n");
        count = 0;
    }
}
fclose(fp);

Respondido 26 ago 12, 18:08

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