Domanda

Sto cercando di scrivere alcuni dati STL di MATLAB e sto cercando di farlo scrivendo un file MEX (una DLL MATLAB scritto in C) Al momento ho un ciclo solo passando attraverso i miei dati scrivendo fuori la sintassi stl con i carri.

...

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;
    }

}

...

Il motivo principale per cui voglio fare questo in un file MEX è perché le cose sono in modo più rapido dal suo compilato. Stavo leggendo un libro C ++, "Sams Teach Yourself C ++ in un nostro un giorno" e nella pagina 645 si parla di utilizzare un buffer per velocizzare la scrittura sul disco. Una volta che il buffer si riempie, scrivere i dati, sciacquare, e farlo di nuovo. Non mostrano in realtà alcun codice su come farlo e questo è con i flussi C ++ 's.

Come potrei affrontare questo in C? Avrei solo fare un char * buffer con una dimensione fissa, e quindi in qualche modo controllare quando il suo pieno e scrivere in un file con fwrite (), lavarlo, ricominciare da capo ??

È stato utile?

Soluzione

In sostanza, si vuole di farlo da soli, lo faresti quasi esattamente come hai scritto: fare un tampone char*, tenere traccia del numero di caratteri in esso (contando i caratteri si mette in esso) e se è completo (o quasi piena), a filo al file.

Tuttavia, questo dovrebbe in realtà non essere un problema con C corsi d'acqua, come fanno di solito buffering. È anche possibile controllare questo buffer con la funzione setbuf et al.

Altri suggerimenti

fprintf non tamponato uscita automaticamente per voi. Se c'è un problema, ci mostrano il codice che apre il file (fp).

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top