Partage
  • Partager sur Facebook
  • Partager sur Twitter

Comment comparer un char à un caractères accentués

    16 juillet 2006 à 16:00:49

    Salut

    Je voudrais effectuer la comparaison suivante
    if (mot[0]=='é')


    Le compilateur me renvoie l'erreur suivante
    mots.c:226:88: attention : constante caractère multi-caractères
    mots.c: Dans la fonction «apostrophe» :
    mots.c:226: attention : comparaison est toujours fausse en raison d'une gamme limitée de type de données

    Le ligne 226 est bien celle de la comparaison.

    Comment je dois faire pour verifier si la 1er lettre est un caractère accentué?

    Merci d'avance
    • Partager sur Facebook
    • Partager sur Twitter
      16 juillet 2006 à 17:01:37

      Salut,
      'é' équivaut à '\202' ou -126 en representation entière.

      Tu peux donc utiliser


      if (mot[0] == '\202')
      // ou
      if (mot[0] == (int)-126)


      Si tu veux la table des correspondances ça dois pouvoir se trouver sur le net, sinon il suffit de te la faire (de la générer même ça ira plus vite que le tapper toi même).

      Le problème au niveau de l'affichage viens aussi souvent de ton terminal, celui de Windows par exemple n'affichera qu'un U accentué à la place du caractère 'é'.

      Pour avoir le numéro ascii d'un caractère dans la table ASCII (ça peut servir) tu peux faire ça comme ça :
      char c = 'é'; // ou '\202'
      int pos = c & 0x000000ff;
      printf("ASCII[%d] : %c", pos, c);
      • Partager sur Facebook
      • Partager sur Twitter
        16 juillet 2006 à 17:34:51

        Je n'ai plus d'erreur à la compilation mais le test ne marche pas (renvoie jamais vrai).

        Est ce que le charset (iso-latin ,utf8) crée une difference?
        • Partager sur Facebook
        • Partager sur Twitter

        Comment comparer un char à un caractères accentués

        × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
        × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
        • Editeur
        • Markdown