Question

Je suis en train d'écrire des données STL sur Matlab et je suis en train de le faire en écrivant un fichier MEX (un DLL Matlab écrit en C) Au moment où j'ai une boucle juste en passant par mes données rédigeait la syntaxe stl avec les flotteurs.

...

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 principale raison pour laquelle je veux faire dans un fichier MEX est parce que les choses sont beaucoup plus rapide depuis sa compilation. Je lisais un livre C ++, « Sams Teach Yourself C ++ dans l'un de nos jour » et la page 645 ils parlent en utilisant un tampon pour accélérer l'écriture sur le disque. Une fois que la mémoire tampon se remplit, écrire les données, le rincer, et de le faire à nouveau. Ils ne montrent pas vraiment de code sur la façon de le faire et c'est avec des flux de C ++.

Comment pourrais-je aborder cela en C? Est-ce que je viens de faire un char * tampon avec une taille fixe, puis vérifier en quelque sorte quand son plein et l'écrire dans un fichier avec fwrite (), chasse d'eau, recommencer ??

Était-ce utile?

La solution

En fait, vous voulez faire vous-même, vous feriez presque exactement comme vous avez écrit: faire un tampon de char*, suivre le nombre de caractères dans ce (en comptant les caractères que vous mettez dedans) et si elle est plein (ou presque complet), rincez au fichier.

Cependant, cela ne devrait vraiment pas être un problème avec les flux C, comme ils le font habituellement en mémoire tampon. Vous pouvez même contrôler cette mise en mémoire tampon avec la fonction setbuf et al.

Autres conseils

fprintf ne bufférisées automatiquement pour vous. S'il y a un problème, nous montrer le code qui ouvre le fichier (fp).

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top