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

C Discussion :

Bug d'écriture dans un fichier texte.


Sujet :

C

Mode arborescent

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    34
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 34
    Par défaut Bug d'écriture dans un fichier texte.
    Bonjour,

    Je travaille sous Windows XP, Visual Studio 2005, et accessoirement wordpad.

    J'ai un bug assez étrange d'écriture dans les fichiers. J'utilise un petite fonction toute bête pour écrire dans un fichier 8, 16 ou 32 bits :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
     
    void put (uint32_t value, FILE* outf, uint8_t len)
    {
      switch (len) {
    	case 8:
    		fputc(value & 0xff,outf);
    		break;
    	case 16:
    	    fputc(value & 0xff,outf);
    		fputc((value >>  8) & 0xff,outf);
    		break;
    	case 32:
    		fputc(value & 0xff,outf);
    		fputc((value >>  8) & 0xff,outf);
    		fputc((value >> 16) & 0xff,outf);
    		fputc((value >> 24) & 0xff,outf); 
    		break;
    		}
    }
    Je lui passe soit un caractère, soit un nombre de 8 bits en entrée (j'ai vérifié même si bien sûr le code accepte jusqu'à 32 bits, il ne reçoit jamais de nombres de plus de 8 bits.) et je passe 8 en second argument. Bien sûr j'aurais pu éviter de mettre un second argument, mais j'utilise aussi cette fonction pour enregistrer mes images 32 bits et 16 bits en BMP. Dans le cas de mon bug, la fonction d'enregistrement d'image a été totalement supprimée du code pour être sûr que ça n'en est pas la source.

    Ma fonction principale est découpée en deux parties, l'une qui gère les touches claviers à partir de la bibliothèque SDL, une autre qui gère les touches souris également à partir de SDL. J'ai vérifié en débuggage, il ne semble pas y avoir d'erreur dessus. Seules les touches souris provoquent un enregistrement, les touches clavier ne font jamais appelle à put. Les touches souris font appel à put pour enregistrer les coordonnées où j'ai cliqué et diverses informations sur l'image dans ces coordonnées.

    Or si j'appuie sur une touche clavier, quelqu'elle soit, il enregistre toujours mes clics de souris, mais le clic suivant, il ne l'enregistre plus en ASCII, mais en quelque chose de... bizarre (je joins le résultat). Autant dire que mon fichier texte devient illisible.

    Si quelqu'un a une idée d'où peut venir le problème, et de comment le résoudre...

    EDIT : j'ai l'impression d'ailleurs qu'il y a des messages mytérieux dans les zones où ça part en vrille...
    Fichiers attachés Fichiers attachés

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

Discussions similaires

  1. écriture dans un fichier texte
    Par fstrobel dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 27/11/2007, 09h09
  2. [Système] Écriture dans un fichier texte
    Par sparil dans le forum Langage
    Réponses: 7
    Dernier message: 21/06/2007, 00h02
  3. lecture/écriture dans un fichier texte
    Par the watcher dans le forum Delphi
    Réponses: 23
    Dernier message: 15/05/2007, 10h57
  4. Réponses: 4
    Dernier message: 02/05/2007, 10h41
  5. Erreur E/S 32 lors de l'écriture dans un fichier text.
    Par yosthegost dans le forum Delphi
    Réponses: 6
    Dernier message: 01/06/2006, 11h45

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