Créer un fichier à partir dun buffer [Résolu]

Signaler
Messages postés
6
Date d'inscription
mardi 18 juillet 2006
Statut
Membre
Dernière intervention
31 juillet 2006
-
Messages postés
6
Date d'inscription
mardi 18 juillet 2006
Statut
Membre
Dernière intervention
31 juillet 2006
-
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

Messages postés
6535
Date d'inscription
lundi 16 décembre 2002
Statut
Modérateur
Dernière intervention
22 août 2010
7
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
Messages postés
3212
Date d'inscription
lundi 7 novembre 2005
Statut
Membre
Dernière intervention
16 février 2009
15
>>"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
Messages postés
6
Date d'inscription
mardi 18 juillet 2006
Statut
Membre
Dernière intervention
31 juillet 2006

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
Messages postés
2023
Date d'inscription
mardi 24 septembre 2002
Statut
Membre
Dernière intervention
28 juillet 2008
5
#include <fstream>


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

if (outfile)

{

    outfile.write(buffer, taille en octet);

    outfile.close();

}
Messages postés
3212
Date d'inscription
lundi 7 novembre 2005
Statut
Membre
Dernière intervention
16 février 2009
15
Petite erreur.
C'est FILE_ATTRIBUTE_NORMAL pas FILE_ATTRUBUTE_NORMAL :)

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

http://programmationdebat.discutforum.com
Messages postés
6
Date d'inscription
mardi 18 juillet 2006
Statut
Membre
Dernière intervention
31 juillet 2006

Hey merci beaucoup les potos, dès que j'aurai finalisé mon code demain je mettrai une copie sur ce sujet.

YA²