Code hexadécimal sous vista (langage C)

Bonjour,
je suis débutant dans la programmation C...
actuelement, je travaille sur un projet de classe qui m'a conduit à la découverte de l'utilisation du code hexadécimal pour l'affichage des caractères spéciaux de la langue francaise...
mon programme fonctionne sans problème sur mon système (windows XP)
le problème qu'il y a est qu'il ne fonctionne pas convenablement sous Vista, enfin tous les caractères spéciaux que j'ai remplacé par leur code hexadécimal ne s'affichez pas normalement sous vista coe c'est le cas sous xp !!!

y aurait-il pas un moyen pour résoudre ce problème???

merci pour vos réactions...
Configuration: Windows XP
Opera 9.80

9 réponses

  1. je ne te comprend pas...
    je dois faire cette vérification dans mon IDE ou...??
    et comment procéder?
    1. Contributeur
      Salut.
      L'encodage, c'est la façon de lier un code hexadécimal à une lettre particulière.
      Ton fichier texte contient en fait des nombres, et l'affichage des caractères dépend de l'encodage que tu lui applique. Pour répondre plus précisemnt à ta question : ça dépend où tu veux que tes caractères s'affichent correctement ? Par exemple (complètement faux, mais c'est pour illustrer) un "é" dans l'IDE donnera un "à" dans la console.
      1. oui... maintenant comment faire cette vérification dans mon IDE?
        je précise que j'utilise Code::Blocks
        1. Contributeur
          Settings -> Editor... -> general settings (premier onglet) -> Default encoding etc.
          1. je viens de vérifier l'encodage, c'est marqué:

            WINDOWS-1252

            Qu'est ce que je fais maintenant?
            1. Contributeur
              Salut,

              Si ta sortie est la console, tu peux utiliser les fonctions CharToOemA() et CharToOemBuffA() pour réaliser la conversion.

              Cdlt
              1. ok fiddy,
                mais... comment m'y prendre? je veux dire... comment utiliser ces fonctions? les deux vont ensemble ou...??
                1. Contributeur
                  Voici un exemple :
                  #include <stdio.h>
                  #include <windows.h>
                  
                  int main (void) {
                        char src[] = "ééé";
                        char dst[4];
                  
                        CharToOem (src,dst);
                        puts(dst);
                  
                        return 0;	
                  }
                  
              2. Merci fiddy pour ton aide.
                Je viens de le testé sur XP et ça marche à merveille. J'espère que ça sera le cas sous Vista...
                Je vais l'essayer sur le Vista d'un ami, comme moi j'en ai pas !