Frage

Ich versuche, einige STL-Daten aus Matlab zu schreiben, und ich versuche, dies zu tun, indem Sie eine MEX-Datei (eine Matlab DLL geschrieben in C) Im Moment schreibt ich eine Schleife nur meine Daten gehen durch das Schreiben aus die stl Syntax mit den Schwimmern.

...

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

}

...

Der Hauptgrund, warum ich dies in einer MEX-Datei tun mag, ist, weil die Dinge Weise schneller sind seit ihrer zusammengestellt. Ich war ein C ++ Buch zu lesen, „Sams Teach Sie sich in einem unserer täglich C ++“ und in Seite 645 sie sprechen über die Verwendung einer Puffer zu beschleunigen das Schreiben auf die Festplatte. Sobald der Puffer voll ist, die Daten schreiben, spülen Sie es, und es wieder tun. Sie zeigen nicht wirklich keinen Code auf, wie das zu tun, und das ist mit C ++ 's-Streams.

Wie würde ich nähere dies in C? Würde ich machen nur einen char * buffer mit einer festen Größe, und dann irgendwie überprüfen, wenn seine volle und schreibt sie in eine Datei mit fwrite (), spülen Sie es, von vorne anfangen ??

War es hilfreich?

Lösung

Im Grunde von euch, es selbst tun möchten, würden Sie es tun, fast genau so, wie Sie geschrieben haben: Stellen Sie die Anzahl der Zeichen in eine char* Puffer, verfolgen (durch die Zeichen Zählen Sie in sie), und wenn es voll (oder fast voll), um es in die Datei spülen.

Allerdings sollte dies nicht wirklich ein Problem mit C-Streams, wie sie in der Regel Pufferung tun. Sie können sogar diese Pufferung mit der Funktion steuern setbuf et al.

Andere Tipps

fprintf nicht gepufferte Ausgang automatisch für Sie. Wenn es ein Problem gibt, zeigen uns den Code, der die Datei (fp) öffnet sich.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top