IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

MFC Discussion :

Affichage de ²²²² lorsque je lis mon buffer


Sujet :

MFC

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    84
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 84
    Points : 46
    Points
    46
    Par défaut Affichage de ²²²² lorsque je lis mon buffer
    Bonjour à tous !

    J'ai qqchose de bizarre qui se passe dans mon programme que voici :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    char filename[255];
    strcpy(filename,cPath);
    char * buffer;
    long size;
    ifstream file (filename, ios::in|ios::binary|ios::ate);
    size = file.tellg();
    file.seekg (0, ios::beg);
    buffer = new char [size];
    file.read (buffer, size);
    file.close();
    printf("Voici le buffer de %d char\n%s",size,buffer);
    et il s'affiche mon fichier texte mais à la fin j'ai 4 "²²²²". Est ce un problème de conversion ? ou alors est ce que ces ²²²² sont dans mon buffer ?

  2. #2
    Rédacteur
    Avatar de farscape
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2003
    Messages
    9 055
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2003
    Messages : 9 055
    Points : 17 323
    Points
    17 323
    Par défaut
    salut,
    c'st normal ,
    lorsque l'on mets %s ça veut dire que la chaine doit se terminer par un \0
    si non vsprintf va lire la memoire jusqu'au prochain zero .....
    ce qui est le cas içi.
    pour specifier une longueur maxi c'est %.10s par exemple -> chaine de 10 caracteres.


  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    84
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 84
    Points : 46
    Points
    46
    Par défaut
    Donc si j'ajoute ce buffer à une CString par exemple en faisant
    les "²²²²" ne seront pas ajouté c ca ?

  4. #4
    Rédacteur
    Avatar de farscape
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2003
    Messages
    9 055
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2003
    Messages : 9 055
    Points : 17 323
    Points
    17 323
    Par défaut
    non tout faux !!!
    ça fonctionnera que si le dernier element valide de buffer contient un \0.
    pour regler ce probleme printf au autre,
    reserve un octet de plus sur ton buffer et mets le à zero .
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    buffer = new char [size+1]; 
    buffer[size]=0;
    la ok .
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    // si buffer peut contenir des \0
    CString toto =CString( buffer,size);
    // sinon
    CString toto =buffer;

  5. #5
    Membre du Club
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    84
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 84
    Points : 46
    Points
    46
    Par défaut
    Ok j'avais tout faux

    Merci Beaucoup !

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [Miktex 2.6] Affichage de pages blanches dans mon pdf
    Par D.Mounir dans le forum Editeurs / Outils
    Réponses: 2
    Dernier message: 28/06/2007, 10h11
  2. Réponses: 1
    Dernier message: 12/01/2007, 23h59
  3. Réponses: 5
    Dernier message: 26/04/2006, 16h36
  4. [Debutant] Affichage du contenu d'un vertex buffer
    Par Edouard Kaiser dans le forum DirectX
    Réponses: 12
    Dernier message: 20/12/2005, 10h26
  5. [DirectShow] problème lorsque je détruit mon graphe
    Par juldjin2 dans le forum DirectX
    Réponses: 1
    Dernier message: 04/02/2004, 21h30

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo