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 :

ASCII, Clavier et boucle sans fin


Sujet :

C

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    6
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 6
    Par défaut ASCII, Clavier et boucle sans fin
    bonjour a tous,
    voilà j'ai un petit problème je ne connais pas la fonction qui permet de détecter un appuis sur une touche du clavier.

    En gros j'amirais faire:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    scanf ("appuyer sur une touche");
    if (/*la touche appuyer est bien "e" */)
    {
    printf ("coucou");
    }
    return 0;
    Comment faire pour reconnaître l'appuis d'une touche ??

    Autre problème: j'aimerais bien faire en sorte d'arrêter une boucle au milieu de son execution (en fait à l'instant précis ou j'appuis sur une touche)

    par exemple:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    while (1)
    {
    printf("coucou");
    printf("salut");      //ici j'appuis sur la touche et je sors du while                   
                            // sans imprimer le toto
    printf("toto");
    }
    Merci de votre attention et de vos futur propositions ^^.

  2. #2
    Membre Expert
    Avatar de Gruik
    Profil pro
    Développeur Web
    Inscrit en
    Juillet 2003
    Messages
    1 566
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Juillet 2003
    Messages : 1 566
    Par défaut
    Salut

    Tu peux pas detecter qu'on appuie sur une touche en C standard.
    Après si tu precises la plateforme, on te conseillera une librairie qui le permette

  3. #3
    Membre émérite Avatar de stephl
    Profil pro
    Développeur informatique
    Inscrit en
    Février 2007
    Messages
    643
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Février 2007
    Messages : 643
    Par défaut
    1) kbhit() <conio.h>
    2) break

  4. #4
    Expert confirmé
    Avatar de Thierry Chappuis
    Homme Profil pro
    Enseignant Chercheur
    Inscrit en
    Mai 2005
    Messages
    3 499
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : Suisse

    Informations professionnelles :
    Activité : Enseignant Chercheur
    Secteur : Industrie Pharmaceutique

    Informations forums :
    Inscription : Mai 2005
    Messages : 3 499
    Par défaut
    Si cela ne te dérange pas d'appuyer sur <ENTER> après avoir appuyé sur une touche, cela peut convenir:
    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
    #include <stdio.h>
    #include <stdlib.h>
     
    void purge(FILE *stream)
    {
        int c;
        while ((c = fgetc(stream)) != '\n' && c != EOF)
        {
            continue;
        }
    }
     
    int main(void)
    {
        int c = 0;
     
        while (c != 'e')
        {
            printf("Appuyez sur une touche: ");
            fflush(stdout);
            if ((c = fgetc(stdin)) != 'e')
            {
                if (c != '\n')
                {
                    purge(stdin);
                }
                printf("Coucou!\n\n");
            }
        }
        puts("FIN du programme!!\n");
        return EXIT_SUCCESS;
    }
    Thierry
    "The most important thing in the kitchen is the waste paper basket and it needs to be centrally located.", Donald Knuth
    "If the only tool you have is a hammer, every problem looks like a nail.", probably Abraham Maslow

    FAQ-Python FAQ-C FAQ-C++

    +

  5. #5
    Membre à l'essai
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    6
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 6
    Par défaut
    Tous d'abord merci a tous pour avoir répondu si rapidement.

    Je vais m'empresser de tester tou ça. ^^

    Enfin je suis sous Windows et je programme sous Visual C++, Dev C++ et Gnuarm (pour transférer sur un robot de Pob Technology).



    (www.pob-technology.com)


    edit:
    Bon ben là j'ai testé vos programme et je reconnais qu'ils fonctionnent sous visual c++ mais je n'arrive pas a le transferrer sur mon robot et j'en suis dégouter ...... Néansmoins je voulais vous remercier pour vos effort.

    L'erreur produite est
    undefined reference to `__imp__iob'

  6. #6
    Membre à l'essai
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    6
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 6
    Par défaut
    Désolé de faire un double post c'est pour posé une nouvelle question sur le même sujet.

    Existe t'il une commande de type "scanf" qui ne demande pas d'appuyer sur "Entrée" aprés la touche?

  7. #7
    Rédacteur/Modérateur
    Avatar de Trap D
    Profil pro
    Inscrit en
    Septembre 2003
    Messages
    4 942
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2003
    Messages : 4 942
    Par défaut
    Ça dépend un peu de ton OS, sous Windows, il y a kbhit() qui detecte l'appui de la touche, voir ici
    "La haine seule fait des choix" - Koan Zen
    "Il ne faut pas être meilleur que les autres, il faut être meilleur que soi." Albert Jacquard
    "Ceux qui savent où ils ont posé leur parapluie ne sont pas alcooliques." - pgibonne.
    Faites du Prolog, ça vous changera les idées !
    Ma page Prolog
    Mes codes sources commentés

    Mon avatar : La Madeleine à la veilleuse de Georges de La Tour

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

Discussions similaires

  1. Réponses: 4
    Dernier message: 02/11/2009, 16h22
  2. [Débutant]Boucle sans fin : Wend non reconnu
    Par SebHoule dans le forum IHM
    Réponses: 5
    Dernier message: 12/06/2006, 16h49
  3. C : utilisation de getopt - il boucle sans fin...
    Par moussmouss dans le forum C
    Réponses: 14
    Dernier message: 21/12/2005, 11h35
  4. Boucle sans fin : danger pour le serveur ?
    Par Rémiz dans le forum Langage
    Réponses: 4
    Dernier message: 09/12/2005, 16h52
  5. [SQL SERVER 2000] Fonction utilisateur : boucle sans fin
    Par galinijay dans le forum MS SQL Server
    Réponses: 3
    Dernier message: 30/09/2005, 16h03

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