Caractère '-52'???

Résolu
cs_skatix Messages postés 5 Date d'inscription mercredi 9 mars 2005 Statut Membre Dernière intervention 10 juillet 2008 - 10 juil. 2008 à 01:39
cs_skatix Messages postés 5 Date d'inscription mercredi 9 mars 2005 Statut Membre Dernière intervention 10 juillet 2008 - 10 juil. 2008 à 08:29
Bonjour à tous.

Je viens vous voir ajourd'hui car je travail sur un projet que j'ai transféré depuis Dev-C++ vers VS C++ 2005.
Le changement de compilateur s'est bien passé mais je rencontre maintenant une erreur bizarre.

Dans mon programme je lis un fichier caractère par caractère (bit par bit plutot).

Le fopen se fait correctement (en mode "rb"), la lecture aussi mais je rencontre un phénomène étrange: le premier bit de chaque fichier texte que je tente d'ouvrir (ceux-ci étant encodés en 8bits) a la valeur '-52'.
Ouais, bizarre un caractère avec une valeur négative me direz-vous... Pourtant le "cout << char( c );" est formel, c'est bien '-52' la valeur du caractère.
Même un fichier vide me renvoit ce caractère négatif.

J'ai ouvert les fichiers textes avec un éditeur hexadécimal mais celui-ci ne détecte aucun caractère bizarre.

Merci de m'éclairer sur cette bizarrerie VS C++...

Fabien

2 réponses

SAKingdom Messages postés 3212 Date d'inscription lundi 7 novembre 2005 Statut Membre Dernière intervention 16 février 2009 15
10 juil. 2008 à 05:26
"Dans mon programme je lis un fichier caractère par caractère (bit par bit plutot)."

Je te rassure, une lecture bit par bit est impossible. C'est bien octet par octet.

"le premier bit de chaque fichier texte que je tente d'ouvrir (ceux-ci étant encodés en 8bits) a la valeur '-52'."

Tien. Normalement un bit ne peut prendre que 1 ou 0. Tu veux donc parler du premier caractère (du premier octet) j'imagine.

Ceci dit, je serais curieux de voir ton code, car ce genre de problème me fait penser à une variable non initialisée.

C++ (@++)<!--
3
cs_skatix Messages postés 5 Date d'inscription mercredi 9 mars 2005 Statut Membre Dernière intervention 10 juillet 2008
10 juil. 2008 à 08:29
Oups désolé, je ne parlais pas de bit mais bien de byte (et donc d'octet)... Petite confusion de ma part, il était tard. ^^

Et en effet tu a raison le problème venait bien d'une variable non initialisée. Une coquine bien cachée mais surtout qui ne créer aucun bug en compilant avec Dev-C++.

C'est quand même étrange cette différence entre Dev-C++ et VS 2005...

En tout cas merci de m'avoir orienté vers la solution d'initialisation de variable.

@+
0
Rejoignez-nous