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 :

Pause avant sortie du programme


Sujet :

C

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé Avatar de Redgard
    Homme Profil pro
    x
    Inscrit en
    Décembre 2014
    Messages
    90
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : x

    Informations forums :
    Inscription : Décembre 2014
    Messages : 90
    Par défaut Pause avant sortie du programme
    Bonjour,


    J'ai codé un programme "nombre mystère". Or quand je trouve le nombre, le programme affiche les dernières lignes et se ferme quasiment instantanément. De ce fait, on n'a pas le temps de voir les dernières lignes.
    Je suis en train de regarder sur internet ce qui se fait en général, mais j'ai un peu du mal à trouver les bons mots clés. Y a-t-il des manières conventionnelles de le faire ?

    Actuellement je retourne "0" dans ma fonction mais en cherchant sur le net, j'ai entendu parlé de la fonction exit(). Y a-t-il un intérêt à la préférer au return 0;?
    J'ai vu qu'elle fermait les flux ouverts, etc.
    http://www.cplusplus.com/reference/c.../exit/?kw=exit
    http://devdocs.io/c/program/exit

    Il n'y aurait pas un genre de wiki du C? Parce que les sites propriétaires, c'est bien mais au final je le trouve plus limité.


    Merci d'avance,
    Red'

  2. #2
    Membre confirmé
    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    30
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 30
    Par défaut
    Bonjour,

    Ce que tu souhaites ici, c'est garder ton programme ouvert, il y a pour cela deux possibilités je dirais :

    • Tu utilises une simple fonction comme sleep pour attendre un peu avant de fermer ton programme.
    • Tu englobes ton programme dans une boucle de sorte à ce que lorsque tu as trouvé la solution, le programme t'affiches "Bravo" puis te demande d'en trouver un autre.


    Tu peux également, lorsque tu as trouvé la solution, demander à l'utilisateur s'il veut jouer de nouveau ou quitter par exemple.

  3. #3
    Membre prolifique
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    12 830
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 12 830
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par Redgard Voir le message
    J'ai codé un programme "nombre mystère". Or quand je trouve le nombre, le programme affiche les dernières lignes et se ferme quasiment instantanément. De ce fait, on a pas le temps de voir les dernières lignes.
    Bonjour

    Je pense que tu es sous Windows et que tu lances ton programme en "double cliquant" dessus. Donc quand il se termine, la fenêtre Windows se ferme puisqu'elle n'a plus rien à montrer.

    Te suffit d'ouvrir une console MsDOS et appeler le programme depuis la ligne de commande. Il se terminera mais la fenêtre MsDOS, elle, ne se fermera pas.

    Ou alors tu fais saisir une chaine à la fin style "appuyez sur return pour quitter".

    Citation Envoyé par Redgard Voir le message
    actuellement je retourne "0" dans ma fonction mais. Mais en cherchant sur le net, j'ai entendu parlé de la fonction exit(). y a-t-il un intérêt à la préférer au return 0;?
    J'ai vu qu'elle fermait les flux ouverts, etc.
    return est une instruction native du langage. exit() est un appel à l'OS pour "demander à fermer" ton programme. Mais depuis le main() ça ne fait aucune différence (visible) et comme généralement les programmeurs consciencieux 1) ne mettent jamais de exit() en dehors du main() et 2) ferment eux-mêmes les ressources qu'ils ont ouvertes...
    Mon Tutoriel sur la programmation «Python»
    Mon Tutoriel sur la programmation «Shell»
    Sinon il y en a pleins d'autres. N'oubliez pas non plus les différentes faq disponibles sur ce site
    Et on poste ses codes entre balises [code] et [/code]

  4. #4
    Membre confirmé Avatar de Redgard
    Homme Profil pro
    x
    Inscrit en
    Décembre 2014
    Messages
    90
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : x

    Informations forums :
    Inscription : Décembre 2014
    Messages : 90
    Par défaut
    Merci pour vos réponses. Dans l'idée, c'était surtout de faire comme certains compilateurs en ajoutant une pause à la fin du programme exécuté.

    En cherchant sur internet, en chipotant, etc, j'en suis arrivé à ça

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    // fonction de sortie
    void PauseApp(void) {
    	do {
    		fputs("Appuyez sur 'Entree' pour terminer le programme. \n", stdout);
    	} while (getchar() != '\n');
     
    }
    Je sais pas si il y a moyen de faire ça plus simplement?...

  5. #5
    Membre prolifique
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    12 830
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 12 830
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par Redgard Voir le message
    Je sais pas si il y a moyen de faire ça plus simplement?...
    Code c : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    // fonction de sortie
    void PauseApp(void) {
    	char buffer[100 + 1];
    	fputs("Appuyez sur 'Entree' pour terminer le programme. \n", stdout);
    	fgets(buffer, 100 + 1, stdin); 
    }
    Mon Tutoriel sur la programmation «Python»
    Mon Tutoriel sur la programmation «Shell»
    Sinon il y en a pleins d'autres. N'oubliez pas non plus les différentes faq disponibles sur ce site
    Et on poste ses codes entre balises [code] et [/code]

  6. #6
    Modérateur

    Avatar de Bktero
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juin 2009
    Messages
    4 493
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Loire Atlantique (Pays de la Loire)

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

    Informations forums :
    Inscription : Juin 2009
    Messages : 4 493
    Billets dans le blog
    1
    Par défaut
    Encore plus simple :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    #include <stdio.h>
     
    int main(void) {
    	puts("Appuyer sur entree pour terminer\n");
    	getchar();
    }
    Ce code ne peut être utilisé tel quel qu'en fin de main() en revanche, car si l'utilisateur ne tape pas simplement ENTREE mais d'autres touches puis ENTREE, il va rester des caractères dans le buffer clavier.

  7. #7
    Membre confirmé Avatar de Redgard
    Homme Profil pro
    x
    Inscrit en
    Décembre 2014
    Messages
    90
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : x

    Informations forums :
    Inscription : Décembre 2014
    Messages : 90
    Par défaut
    Citation Envoyé par Bktero Voir le message
    Encore plus simple :
    Ce code ne peut être utilisé tel quel qu'en fin de main() en revanche, car si l'utilisateur ne tape pas simplement ENTREE mais d'autres touches puis ENTREE, il va rester des caractères dans le buffer clavier.
    Est-ce que c'est pas pour cette raison que Sv@er utilise fgets(), utilisant alors un tableau?

    Si elle est utilisé en plein milieu d'un programme, le risque est qu'à l'entrée suivante, on aie les caractères de la saisie précédente qui viennent parasiter/ perturber la nouvelle entrée?

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

Discussions similaires

  1. Détecter la sortie du programme
    Par ameno_123 dans le forum Langage
    Réponses: 3
    Dernier message: 07/09/2007, 19h32
  2. Réponses: 1
    Dernier message: 21/07/2007, 22h29
  3. Erreur à la sortie du programme
    Par Sachiel31 dans le forum C++
    Réponses: 19
    Dernier message: 26/07/2006, 09h47
  4. Marquer une pause avant de lancer une action
    Par PrinceMaster77 dans le forum ASP
    Réponses: 1
    Dernier message: 12/07/2006, 11h50
  5. petit problème de sortie de programme
    Par clampin dans le forum C
    Réponses: 2
    Dernier message: 17/06/2006, 11h51

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