Créer un fichier à partir dun buffer

Résolu
tylenchuz Messages postés 6 Date d'inscription mardi 18 juillet 2006 Statut Membre Dernière intervention 31 juillet 2006 - 25 juil. 2006 à 17:20
tylenchuz Messages postés 6 Date d'inscription mardi 18 juillet 2006 Statut Membre Dernière intervention 31 juillet 2006 - 27 juil. 2006 à 14:33
bonjour a tous,
j'aurais une petite question rapide pour ceux qui savent :
j'ai un "unsigned char * buffer" qui pointe sur une suite de données récupérées grace a des paquets IP.
j'ai un certain protocol pour tout remettre à la queue leuleu, ça c bon, j'y arrive.
maintenant, je voudrai prendre ce "buffer" et le mettre dans un fichier que je crée (genre TMP1, apres on aura TMP2, TMP3, ...). ce qu'il y a de relou avec ce buf, c les caractères des fins interpréT par la machine ( desqu'il y a un zéro, il croi que c la fin )
je travail sur windows avec visual C++ ( meme si je code en C)

merci pour votre aide

YA²

6 réponses

vecchio56 Messages postés 6535 Date d'inscription lundi 16 décembre 2002 Statut Membre Dernière intervention 22 août 2010 14
25 juil. 2006 à 17:37
Ca dépend comment tu ouvres ton fichier, mais WriteFile ou fwrite feront l'affaire (les 0 sont écrits aussi)

_____________________________________
Un éditeur de ressources gratuit pour Windows
3
SAKingdom Messages postés 3212 Date d'inscription lundi 7 novembre 2005 Statut Membre Dernière intervention 16 février 2009 15
25 juil. 2006 à 22:06
>>"meme si je code en C"
Si il code effectivement en C, il peut oublier ofstream.

Si c'est le cas, utilise WriteFile. C'est pas compliqué.

HANDLE hFile;
DWORD bytew;

hFile = CreateFile("Fichier.txt", GENERIC_WRITE, 0, 0, CREATE_ALWAYS, FILE_ATTRUBUTE_NORMAL, 0);

WriteFile(hFile, lpBuffer, tailleenoctet, &bytew, 0);

CloseHandle(hFile);

C++ (@++)
___________________________________________
Les plus grands esprits trouvent toujours une solution

http://programmationdebat.discutforum.com
3
tylenchuz Messages postés 6 Date d'inscription mardi 18 juillet 2006 Statut Membre Dernière intervention 31 juillet 2006
27 juil. 2006 à 14:33
int CreateFileOnHardDisk (unsigned char * FILE_BUF,int size,int _toi)
{
    FILE *stream;
    char FileName[30];
    int result;
    struct _stat buff;
    sprintf( FileName,"TmP%d", _toi );
    if(_toi==0)
        sprintf(FileName,"fdt%d.txt",fdtnum);
    result = _stat( FileName , &buff );
    while( result == 0 )
    {
        if(_toi==0)
        {
            fdtnum++;
            sprintf( FileName,"TmP%d.txt", fdtnum );
        }
        else
        {
            sprintf( FileName,"verifytheTOI%d", _toi );
        }
        result = _stat( FileName , &buff );
    }
    if(result!=0)
    {        if( (stream fopen(FileName, "w+" )) NULL )
                printf( "The file %s was not opened\n", FileName );
        else
        {
            if(fwrite(FILE_BUF,size,1,stream)==0)
            {
                printf ("\nproblem with file");
                return (-1);
            }
            else
            {
                printf("\nfile: %s ,created!",FileName);
                if(_toi==0)
                    fdtnum++;
            }
        }
    }
    if( fclose( stream ) )
        printf( "The file %s was not closed\n",FileName);
    return 0;
}

le toi est juste un indicateur pour le nom du fichier:)

YA² : Hakuna Mahatma
3
luhtor Messages postés 2023 Date d'inscription mardi 24 septembre 2002 Statut Membre Dernière intervention 28 juillet 2008 6
25 juil. 2006 à 19:11
#include <fstream>


std::ofstream outfile("test.txt", std::ios::binary);

if (outfile)

{

    outfile.write(buffer, taille en octet);

    outfile.close();

}
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
SAKingdom Messages postés 3212 Date d'inscription lundi 7 novembre 2005 Statut Membre Dernière intervention 16 février 2009 15
25 juil. 2006 à 22:07
Petite erreur.
C'est FILE_ATTRIBUTE_NORMAL pas FILE_ATTRUBUTE_NORMAL :)

C++ (@++)
___________________________________________
Les plus grands esprits trouvent toujours une solution

http://programmationdebat.discutforum.com
0
tylenchuz Messages postés 6 Date d'inscription mardi 18 juillet 2006 Statut Membre Dernière intervention 31 juillet 2006
25 juil. 2006 à 23:57
Hey merci beaucoup les potos, dès que j'aurai finalisé mon code demain je mettrai une copie sur ce sujet.

YA²
0
Rejoignez-nous