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 :

N'arrive toujours pas à règler son problème de lettres


Sujet :

C++

  1. #1
    Membre du Club Avatar de Antigonos Ier Gonatas
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    78
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 78
    Points : 40
    Points
    40
    Par défaut N'arrive toujours pas à règler son problème de lettres
    Bonjour à tous, je sais, je suis un peu énervant.
    J'ai toujours un problème avec l'affichage des lettres lorsque j'exécute mon programme sur console, voyez ci-dessous:



    il y a deux faþons de jouer Ó Decriptix:en devinant un modÞle crÚÚ par l'ordinat
    eur,ou en laissant l'ordinateur deviner le v¶tre.

    Si vous devinez, l'ordinateur va penser Ó une
    suite de lettres (e.g., abcde).

    A chaque tour, vous faites une proposition et
    l'ordinateur vous dit combien de lettres sont
    correctes, et combien parmi celles-ci occupent
    la position exacte dans le modÞle.

    Le but est de dÚcoder le code aussi rapidement que possible
    Vous dÚcidez combien de lettres
    peuvent Ûtre utilisÚes et le nombre de positions
    (e.g, 5 lettres possibles dans 4 positions)
    ainsi que si le modÞle peut ou non contenir
    des lettres en double (e.g., aabcd).

    Si l'ordinateur devine, vous pensez Ó une suite de
    lettres et donnez le score de chaque rÚponse.



    Médinoc m'avait dit de mettre Voir: CharToOem(), CharToOemBuff()
    ou bien, directement WriteConsoleW() avec des chaînes larges ( L"Médinoc" au lieu de "Médinoc" )...


    post croisé...

    Regarde mon post au-dessus,
    il indique les fonctions de conversion (ou directement d'écriture) utilisables
    sous Windows pour avoir les bons accents sur la console...


    J'ai essayer de les mettrent à la place de la fonction main,
    mais rien à faire, cette fois il n'a pas voulu se compiler, j'ai alors trouver
    une réponse possible dans les FAQ:


    Si en compilant un programme C/C++ sous Windows vous obtenez un message d'erreur du type

    error LNK2019: symbole externe non résolu _WinMain@16 référencé dans la fonction _WinMainCRTStartup [Linker error] undefined reference to `WinMain@16'

    C'est que vous avez créé un projet Win32 sans console au lieu d'un projet console,

    ce qui fait que le compilateur s'attend à trouver la fonction d'entrée WinMain() à la place de la fonction standard main().

    A partir de Visual C++ 7, vous pouvez modifier les propriétés de votre projet via Propriétés de

    configuation->Editeur de liens->Système->Sous-système : Console (/SUBSYSTEM:CONSOLE). Pour les versions antérieures,
    il faut créer un nouveau projet console.


    J'ai donc aussi essayé avec cette nouvelle fonction, sans succès.
    Est-ce qu'il y aurait une âme charitable qui pourrait aider un gars pas doué ici?
    Merci d'avance



    [/quote]

  2. #2
    Expert confirmé
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Décembre 2003
    Messages
    3 549
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Décembre 2003
    Messages : 3 549
    Points : 4 625
    Points
    4 625
    Par défaut
    Médinoc t'as déjà donné les solutions.
    Il faut que tu convertisses ton texte qui est en "ANSI" en "OEM".

  3. #3
    Expert éminent sénior
    Avatar de Luc Hermitte
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2003
    Messages
    5 279
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Août 2003
    Messages : 5 279
    Points : 11 015
    Points
    11 015
    Par défaut
    Ce ne donne pas très envie de répondre quand un thread est créé alors qu'un précédent donnait toutes les pistes de réponses, à commencer par la recherche avancée avec "OEM" en mot clé. Tu as plein de solutions sur la première page. Tu peux même réduire en rajoutant "cout".

  4. #4
    Expert éminent sénior
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 379
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 379
    Points : 41 573
    Points
    41 573
    Par défaut
    En C: (Je ne sais plus si on peut faire cela avec wcout en C++: sous Windows, je sais que la fonction C putws() est foireuse (du moins, celle de VC6 l'était), mais je ne sais pas si wcout l'est)...

    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
    //Projet Win32 console
    #include <windows.h>
     
    void EcrireConsoleW(const wchar_t *sczMessage)
    {
    DWORD dwNbEcrits = 0;
    WriteConsoleW(
     GetStdHandle(STD_OUTPUT_HANDLE), //"stdout" windows
     sczMessage,                      //message
     wcslen(sczMessage),              //strlen pour les wchar_t
     &dwNbEcrits,
     NULL
     );
    }
     
    int main(void)
    {
    EcrireConsoleW(L"Développez!\n");
     
    return 0;
    }
    Par contre, ça ne marche que si la sortie est une console.
    Si la sortie a été redirigée vers un fichier, WriteConsoleW() échoue.
    On peut tester si la sortie est "sans doute" une console avec GetFileType(), mais ça foirera si tu écris sur un port LPT).

    De plus, WriteFile() ne convertit pas les wchar_t en octets, donc si la sortie standard n'est plus une console, ce n'est vraiment pas de la tarte de savoir vraiment quoi écrire.


    Aussi, je te conseille la méthode plus simple: tenter wcout, et si ça ne marche pas, passer par un buffer et utiliser CharToOem() ou CharToOemBuff()...

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

Discussions similaires

  1. Pas de son, problème de driver
    Par Invité dans le forum Windows XP
    Réponses: 7
    Dernier message: 06/12/2010, 18h06
  2. CLS , j'arrive toujours pas à comprendre ?
    Par am@123 dans le forum Framework .NET
    Réponses: 3
    Dernier message: 11/02/2007, 15h28
  3. Réponses: 2
    Dernier message: 20/11/2006, 20h22
  4. Réponses: 6
    Dernier message: 04/07/2006, 11h56
  5. Réponses: 8
    Dernier message: 16/09/2003, 19h29

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