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 :

Pourquoi le prompt ne s'affiche qu'une seule fois?


Sujet :

C

  1. #1
    Membre du Club
    Homme Profil pro
    Etudiant
    Inscrit en
    Novembre 2015
    Messages
    156
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Etudiant

    Informations forums :
    Inscription : Novembre 2015
    Messages : 156
    Points : 52
    Points
    52
    Par défaut Pourquoi le prompt ne s'affiche qu'une seule fois?
    Bonsoir!

    Je construis mon propre shell en C et j'avais une question à propos de l'affichage du prompt dans la main.
    Pourquoi lorsque je code ceci le prompt ne s'affiche tout de meme qu'une seule fois alors qu'il devrait etre affiché une deuxième fois à partir du while, non?
    Et j'avais une question annexe: c'est mon prof qui les a rajouté mais à quoi servent les fflush(stdout)?


    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
    int main(int argc, char* argv[]){
            int s = 0;
            printf("Dauphine>");
            fflush(stdout);// à quoi ça sert?
            while(1){
             s = commande();
             switch(s){
    	         case 7: // EOF
    	         return 0;
     
    	         case 0: // CR
    	         printf("Dauphine>");
    	         fflush(stdout);
    	         break;
             }
             fflush(stdout);
            }
     
        return 0;
    }

  2. #2
    Expert éminent
    Homme Profil pro
    Ingénieur développement matériel électronique
    Inscrit en
    Décembre 2015
    Messages
    1 566
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    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 566
    Points : 7 652
    Points
    7 652
    Par défaut
    Bonjour,
    Citation Envoyé par AntoineCompagnie Voir le message
    le prompt ne s'affiche tout de meme qu'une seule fois alors qu'il devrait etre affiché une deuxième fois à partir du while, non?
    Ça dépend de ce que retourne la fonction commande(). Si elle retourne 7 tout s'arrête, si 0 il y a prompt, pour toutes les autres valeurs ça reboucle sans prompt.

    Citation Envoyé par AntoineCompagnie Voir le message
    Et j'avais une question annexe: c'est mon prof qui les a rajouté mais à quoi servent les fflush(stdout)?
    Un classique que tu aurais pu trouver en cherchant un tout petit peu.
    La sortie stdout utilisée par printf() est bufferisée, cela signifie que les données passent par un buffer intermédiaire et ne vont vers la console que sous diverses conditions. Le fflush(stdout) provoque le vidage du buffer et force ainsi l'affichage.
    Pour des programmes simples ou en debug, il est plus facile de désactiver ce buffer pour éviter ces flush en appelant
    setvbuf(stdout, NULL, _IONBF, 0);
    Attention, cette fonction ne peux être appelée qu'avant la première utilisation de stdout.

  3. #3
    Membre du Club
    Homme Profil pro
    Etudiant
    Inscrit en
    Novembre 2015
    Messages
    156
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Etudiant

    Informations forums :
    Inscription : Novembre 2015
    Messages : 156
    Points : 52
    Points
    52
    Par défaut
    D'accord! Mais pourtant au départ s est à 0 et je n'ai qu'un seul prompt!

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    ubuntu@ubuntu:~$ ./terminal
    Dauphine>
    Ok pour le vidage de buffer pour forcer à l'affichage, merci!

  4. #4
    Expert éminent
    Homme Profil pro
    Ingénieur développement matériel électronique
    Inscrit en
    Décembre 2015
    Messages
    1 566
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    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 566
    Points : 7 652
    Points
    7 652
    Par défaut
    s prend la valeur retourné par commande() puis on décide ou pas d'afficher le 2nd prompt.

Discussions similaires

  1. AlertDialog ne s'affiche qu'une seule fois
    Par lolo818 dans le forum Android
    Réponses: 0
    Dernier message: 16/01/2015, 18h43
  2. pourquoi on error goto ne fonctionne qu'une seule fois ?
    Par alsimbad dans le forum Général VBA
    Réponses: 9
    Dernier message: 05/09/2014, 12h09
  3. Réponses: 5
    Dernier message: 16/04/2014, 15h15
  4. Recherche par mots clés : afficher qu'une seule fois la même valeur
    Par Zazou48 dans le forum EDI, CMS, Outils, Scripts et API
    Réponses: 3
    Dernier message: 09/05/2013, 15h30
  5. Afficher Bonjour une seule fois
    Par mike_chti dans le forum Langage
    Réponses: 4
    Dernier message: 11/10/2008, 10h38

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