Pregunta

Estoy intentando escribir algunos datos STL de MATLAB y yo estoy tratando de hacer esto escribiendo un archivo MEX (una DLL MATLAB escrito en C) En el momento en que he de un bucle acaba de pasar por mis escritura de datos a cabo la sintaxis STL con los flotadores.

...

for(m=0;m<colLen;m++)
{

    res = m % 3;
    if(res == 0)
    {   
        fprintf(fp, "\tfacet normal %f %f %f \n",
                normalValues[(x*nvcolLen)+0], normalValues[(x*nvcolLen)+1], normalValues[(x*nvcolLen)+2]);
        fprintf(fp,"\t\touter loop\n" );
        flag = 0;
        x++;
    }


    fprintf(fp, "\t\t\tvertex ");

    for(n=0;n<rowLen;n++)
    {
        fprintf(fp, "%f ", xValues[m*rowLen+n]);

    }

    fprintf(fp,"\n");

    flag++;

    if (flag == 3)
    {
        fprintf(fp, "\t\tendloop\n\tendfacet\n");
        flag = 0;
    }

}

...

La razón principal por la que quiero hacer esto en un archivo MEX es porque las cosas son manera más rápida desde su compilado. Estaba leyendo un libro de C ++, "Sams Teach Yourself C ++ en nuestra Uno al día" y en la página 645 se habla de utilizar un tampones para acelerar la escritura en el disco. Una vez que la memoria intermedia se llena, escribir los datos, tirar de la cadena, y hacerlo de nuevo. En realidad, no muestran ningún código en la forma de hacer eso y esto es con las corrientes de C ++ s.

¿Cómo iba a acercarse a este en C? ¿Me acaba de hacer un char * buffer con un tamaño fijo, y entonces de alguna manera comprobar cuando está llena y escribirla en un archivo con fwrite (), tirar de la cadena, empezar de nuevo ??

¿Fue útil?

Solución

Básicamente, de que desea hacerlo usted mismo, usted lo haría casi exactamente como los escribió: hacer una memoria intermedia char*, realizar un seguimiento del número de caracteres en ella (contando los caracteres que usted pone en ella) y si es completa (o casi completa), tirar de la cadena en el fichero.

Sin embargo, esto debe realmente no ser un problema con C arroyos, como suelen hacer buffering. Incluso puede controlar este búfer con la función setbuf et al.

Otros consejos

fprintf no amortiguada de salida automáticamente. Si hay un problema, nos muestran el código que abre el archivo (fp).

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top