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 :

Problème de compilation sous cigwin


Sujet :

C

  1. #1
    Candidat au Club
    Homme Profil pro
    Esisar-Grenoble INP
    Inscrit en
    Avril 2014
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Esisar-Grenoble INP
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Avril 2014
    Messages : 6
    Points : 4
    Points
    4
    Par défaut Problème de compilation sous cigwin
    Bonjour,

    Voilà j'ai un problème avec cygwin (comme l'indique le sujet ^^).

    Pour expliquer mon problème j'ai pris un code assez simple (cf la photo). Lorsque j'exécute un programme (en C compilé avec gcc) il n'affiche pas le contenu de mes printf ou mes puts, en tout cas pas avant que le programme se finisse (return(1)). Ce qui est problématique, puisque quand je demande à l'utilisateur de rentrer des données (je mets toujours un petit printf pour lui indiquer quoi marquer), mais du coup rien de s'affiche, et le programme attend juste que je rentre des données. Je ne sais pas, si ce que j'ai expliqué n'est pas clair, mais je pense que ma photo vous éclairera plus sur mon problème.

    Quelqu'un sais comment résoudre se problème ou a déjà eu se problème ?

    Merci d'avance de vos réponses,

    azer136.
    Images attachées Images attachées  

  2. #2
    Expert éminent sénior
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 369
    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 369
    Points : 41 518
    Points
    41 518
    Par défaut
    Ça ressemble plus à un problème d'exécution que de compilation.
    SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.

    "Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
    Apparently everyone.
    -- Raymond Chen.
    Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.

  3. #3
    Expert confirmé
    Inscrit en
    Mars 2005
    Messages
    1 431
    Détails du profil
    Informations forums :
    Inscription : Mars 2005
    Messages : 1 431
    Points : 4 182
    Points
    4 182
    Par défaut
    Je pense que le comportement dont tu es témoin vient du fait que la sortie stdout utilisée par printf et puts est bufferisée, c'est-à-dire que les données sont enfilées dans un tampon qui n'est vidé que lorsqu'il est plein (cela diminue le nombre d'appels système). La taille de ce tampon et donc le comportement de stdout dépendent de l'implémentation et sont donc imprévisibles. Ce n'est pas grave lorsque tu envoies un flux continu d'information dans un journal mais ça pose problème lorsque tu t'en sers pour communiquer de manière interactive avec l'utilisateur, comme ici.

    Tu as deux solutions :
    • utiliser un flux non bufferisé, c'est le cas de stderr : fprintf(stderr, "Vous avez entré : '%c'.", c); ;
    • forcer le vidage du tampon de stdout lorsque tu veux afficher son contenu : fflush(stdout); .


    À noter qu'il me semble que le caractère '\n' force le vidage du tampon en pratique, mais je ne sais pas si c'est dans la norme.

  4. #4
    Candidat au Club
    Homme Profil pro
    Esisar-Grenoble INP
    Inscrit en
    Avril 2014
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Esisar-Grenoble INP
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Avril 2014
    Messages : 6
    Points : 4
    Points
    4
    Par défaut
    Merci,

    Effectivement l'utilisation de "fflush" à résolu mon problème, mais pourquoi je n'est pas ce problème sous Code:Blocks ou sur mon émulateur Linux. Est-ce que ça viens de Cygwin, et si oui comment je résoudre (configuration).

    Merci d'avance.

  5. #5
    Expert confirmé
    Inscrit en
    Mars 2005
    Messages
    1 431
    Détails du profil
    Informations forums :
    Inscription : Mars 2005
    Messages : 1 431
    Points : 4 182
    Points
    4 182
    Par défaut
    J'ai précisé que le comportement des fonctions ayant recourt à stdout dépendait de l'implémentation, si tu veux garantir le fonctionnement de ton programme quelque soit la plate-forme alors la marche à suivre est celle que je t'ai indiquée.

Discussions similaires

  1. Réponses: 4
    Dernier message: 01/06/2008, 18h23
  2. Problêmes de compilation sous linux
    Par Micky_du_57 dans le forum GLUT
    Réponses: 4
    Dernier message: 25/05/2007, 20h37
  3. [Flex / Bison] Problème de compilation sous Visual C++
    Par levalp dans le forum Générateurs de compilateur
    Réponses: 1
    Dernier message: 25/07/2006, 15h26
  4. problème de compilation sous XP/Centrino?
    Par RalphH dans le forum C++Builder
    Réponses: 19
    Dernier message: 23/10/2004, 16h12
  5. problème de compilation sous visual C++
    Par fabmili dans le forum MFC
    Réponses: 4
    Dernier message: 08/02/2004, 19h52

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