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 :

Afficher les accents dans une chaîne en mode console


Sujet :

C

  1. #1
    Membre à l'essai Avatar de Zanaki
    Homme Profil pro
    Hunter
    Inscrit en
    Novembre 2017
    Messages
    20
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Hunter
    Secteur : Tourisme - Loisirs

    Informations forums :
    Inscription : Novembre 2017
    Messages : 20
    Points : 19
    Points
    19
    Par défaut Afficher les accents dans une chaîne en mode console
    Hey bonsoir à tous,
    Tout est dans le titre. Je m'explique; J'aimerais pouvoir afficher des accents dans les chaines de caractères. Je rencontre certains problème assez étranger.
    Pour commencer, je vous donne quelques codes.

    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
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
     
     
    // Grâce a un tutoriel, j'ai réussi a me faire une petite fonction bien placer qui gère tous les Accents
      const char * Accent(const char * mess)
       {
          static char retour [80];
          CharToOem (mess,retour); // API Windows
          return retour;
       }
     
    // Voici le système de choix
    int Choix(const char* ch[],int taille,int colonne, int ligne)
    {
        int i,curs = 0;
        while (1)
        {
           for (i = 0; i < taille; i++)
           {
              Locate(colonne, ligne+i);
              printf("%c%s", (i == curs) ? '>':' ', ch[i]);
           }
            int touche = _getch();
            if (touche == 0x50 && curs < taille-1)curs++;
            if (touche == 0x48 && curs > 0)curs--;
            if (touche == 0x0D)
        return curs + 1;
        }
        return 0;
    }
     
    // Voici ma chaine de caractère. Comme vous pouvais le voir, j'ai mis des accent pour le test.
        const char* tab[] = {" Jôôôôùùùùùéééèèèè\n\n\n"," Rèèèglàààà\n\n\n"," Qûûûûûîîîîîîîttéééèèèè\n\n\n"} ; int c = Choix(tab,3,25,17);
    Sachant que de base, pour afficher des accent, je dois procédés comme suite;
    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
    20
     
    //Oui oui, cette petite fonction prends en charge tous les Accents.
    printf ("%s\n",Accent("é è ê ë | à â ä | ù û ü | î ï | Ç ç | ô ö Ô | etc... etc...\n\n"));
     
    // Où tout simplement (dans la chaine de caractère)
        const char* tab[] = {Accent(" Jôôôôùùùùùéééèèèè\n\n\n"),(" Rèèèglàààà\n\n\n"),(" Qûûûûûîîîîîîîttéééèèèè\n\n\n")} ; int c = Choix(tab,3,25,17);
     
    /* 
    Vous remarquerez que je ne suis pas obliger de mettre des parenthèses là ou se trouve le texte.
    Et dans cet exemple, il y a que le Jouer qui s'affichera correctement. Régla et Quitter serons déformer.
    */
     
    // Maintenant si je fais
        const char* tab[] = {Accent(" Jôôôôùùùùùéééèèèè\n\n\n"),Accent(" Rèèèglàààà\n\n\n"),Accent(" Qûûûûûîîîîîîîttéééèèèè\n\n\n")} ; int c = Choix(tab,3,25,17);
    // J'ai 4 chance / 3 que le jeux plante et quand il ne plante pas, alors il m'affichera Quitter, Quitter et encore Quitter (trololol). Oui oui, les trois choix possible serons "Quitter"
    // En faites, ça remplacera le texte en question mais pas les directions.
     
    //Si je fais ça;
        const char* tab[] = {Accent(" Jôôôôùùùùùéééèèèè\n\n\n"),Accent(" Rèèèglàààà\n\n\n"),(" Qûûûûûîîîîîîîttéééèèèè\n\n\n")} ; int c = Choix(tab,3,25,17);
    // J'ai retiré l'Accent de Quitter et maintenant mon programme affichera Regla, Regla et Quitter. Oui deux fois régla.
    Enfin voilà, si vous aviez une autre idée de comment je pourrais procédé, je suis preneur ou si vous trouver un moyens de résoudre ce petit problème, je pourrais enfin commencer mon petit jeu.
    Je vous dis un grand merci et à bientôt !

  2. #2
    Expert éminent
    Homme Profil pro
    Ingénieur développement matériel électronique
    Inscrit en
    Décembre 2015
    Messages
    1 562
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Ingénieur développement matériel électronique
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Décembre 2015
    Messages : 1 562
    Points : 7 628
    Points
    7 628
    Par défaut
    Bonjour,
    Une fonction ne peut pas retourner un tableau. Ligne 6, le mot static permet à la fonction de retourner un pointeur sur une zone globale. Mais il y a une zone, donc tous les appels à la fonction retournent la même zone.
    Il faut réserver des tableaux, puis utiliser une fonction pour les remplir un après l'autre.

  3. #3
    Membre à l'essai Avatar de Zanaki
    Homme Profil pro
    Hunter
    Inscrit en
    Novembre 2017
    Messages
    20
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Hunter
    Secteur : Tourisme - Loisirs

    Informations forums :
    Inscription : Novembre 2017
    Messages : 20
    Points : 19
    Points
    19
    Par défaut
    Oh merci pour ta réponse, serais-tu me dire comment dois-je m'y prendre ??

  4. #4
    Expert éminent
    Homme Profil pro
    Ingénieur développement matériel électronique
    Inscrit en
    Décembre 2015
    Messages
    1 562
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Ingénieur développement matériel électronique
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Décembre 2015
    Messages : 1 562
    Points : 7 628
    Points
    7 628
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    void Accent( const char *mess, char retour[] ) {
          CharToOem (mess,retour); // API Windows
    }
    const char tab[3][50]; // assez grand pour la conversion!
    Accent(" Jôôôôùùùùùéééèèèè\n\n\n" , &tab[0][0] );
    Accent(" Rèèèglàààà\n\n\n", &tab[1][0] );
    Accent(" Qûûûûûîîîîîîîttéééèèèè\n\n\n", &tab[1][0] );
    Ou
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    char* Accent( const char * mess ) {
          char *retour = malloc( 50 ); // assez grand pour la conversion!
          CharToOem (mess,retour); // API Windows
          return retour;
    }
    const char* tab[] = { Accent(" Jôôôôùùùùùéééèèèè\n\n\n"), Accent(" Rèèèglàààà\n\n\n"), Accent(" Qûûûûûîîîîîîîttéééèèèè\n\n\n") };
    // Si tab[] est n'est pas global, penser à libérer les 3 pointeurs alloués après destruction de tab[]

  5. #5
    Membre à l'essai Avatar de Zanaki
    Homme Profil pro
    Hunter
    Inscrit en
    Novembre 2017
    Messages
    20
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Hunter
    Secteur : Tourisme - Loisirs

    Informations forums :
    Inscription : Novembre 2017
    Messages : 20
    Points : 19
    Points
    19
    Par défaut
    Merci beaucoup pour ta réponses. Chez moi il y a que la solution deux qui fonctionne quant-à la première, elle ne veut pas fonctionner.

    Crois-tu qu'avec cette méthode je ne rencontrerais pas de problème à l'avenirs ??

    En tout cas, ça fonctionne très bien pour le moment, je te dis un grand merci !

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

Discussions similaires

  1. Afficher les accent dans une console
    Par arnaud036 dans le forum C
    Réponses: 11
    Dernier message: 18/01/2008, 13h43
  2. Supprimer les accents dans une chaîne
    Par SuperChafouin dans le forum Langage
    Réponses: 4
    Dernier message: 17/12/2007, 18h28
  3. Remplacer les accents dans une chaîne
    Par mathieumg dans le forum C
    Réponses: 9
    Dernier message: 23/07/2006, 16h39
  4. Comment afficher les toolTipText dans une zone de statut ?
    Par nicok01 dans le forum VB 6 et antérieur
    Réponses: 7
    Dernier message: 28/01/2005, 14h32

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