2016-03-22 2 views
-1

disons que je suis dans une boucle infinie et je veux que l'utilisateur entre les données sous forme entière. Ensuite, les données seront transmises à une autre fonction à d'autres fins. Ce processus continuera jusqu'à ce que l'entrée de l'utilisateur s'écarte à la place des données et je veux que la boucle se casse à ce point. comment devrais-je faire ça?quitter une boucle en prenant esc comme entrée de l'utilisateur

while(1) 
{ 
    printf("enter the data that need to entered\npress esc to exit\n"); 

    scanf("%d",&n); 

    function(n); 
} 

i essayé d'utiliser if-else mais si je mets la valeur ascii de esc comme l'entrée de données, il sort de la boucle que je ne veux pas arriver?

Répondre

0

Comme dingrite a écrit dans son autre réponse:

Votre meilleur pari est de créer une fonction personnalisée « GetAsyncKeyState » qui utilisera #IFDEF pour Windows et Linux pour choisir le GetAsyncKeyState() approprié ou équivalent .

Aucun autre moyen n'existe pour atteindre le résultat souhaité, l'approche cin a ses problèmes - comme l'application doit être au point.

Jetez un oeil à cette question: C++: execute a while loop until a key is pressed e.g. Esc?

Ou vous pouvez essayer avec cet exemple trouvé sur la page d'autres

#include <stdio.h> 

int main (void) 
{ 
    int c; 

    while (1) { 
     c = getchar();   // Get one character from the input 
     if (c == 27) { break; } // Exit the loop if we receive ESC 
     putchar(c);    // Put the character to the output 
    } 

    return 0; 
} 

Hope this helps.