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 :

redirection de stdout


Sujet :

C

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    33
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 33
    Par défaut redirection de stdout
    Bonjour,
    je voudrais créer une variable globale en C.
    si je lui donne comme valeur stdout, j'aimerai que mes printf se fassent sur la console, mais si je lui donne un autre nom (typiquement un nom de fichier), je voudrais que mes printf soient redirigés vers ce fichier et donc ne s'affichent plus à l'écran.
    Avez vous une solution?
    Bien cordialement
    tet.dum

  2. #2
    Membre émérite
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    865
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2005
    Messages : 865
    Par défaut
    je voudrais créer une variable globale en C.
    NON, évite à tout prix les variables globales.

    Avez vous une solution?
    Utilise fprintf(). http://man.developpez.com/man3/fprintf.3.php
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    FILE * fichier; /* A initialiser avec fopen stdout stderr */
    fprintf (stdout,...
    fprintf (fichier,...

  3. #3
    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,

    regarde du côté de freopen

  4. #4
    Expert éminent
    Avatar de Emmanuel Delahaye
    Profil pro
    Retraité
    Inscrit en
    Décembre 2003
    Messages
    14 512
    Détails du profil
    Informations personnelles :
    Âge : 68
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2003
    Messages : 14 512
    Par défaut
    Citation Envoyé par tet.dum Voir le message
    je voudrais créer une variable globale en C.
    T'es sûr ? On a kidnappé ta fille pour t'obliger à ça ?

    http://emmanuel-delahaye.developpez....s.htm#globales
    si je lui donne comme valeur stdout, j'aimerai que mes printf se fassent sur la console, mais si je lui donne un autre nom (typiquement un nom de fichier), je voudrais que mes printf soient redirigés vers ce fichier et donc ne s'affichent plus à l'écran.
    Bah, justement, il n'y a pas besoin de variable globale (visible). Il suffit d'utiliser freopen() pour envoyer stdout où tu veux...

    "They have kidnapped my daughter !"
    -- J.B. in 24.

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Août 2007
    Messages
    98
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2007
    Messages : 98
    Par défaut
    Juste pour savoir, bien sur les variables globales sont globalement a proscrire mais n'y a t'il pas certains cas ou cela est qd mm preferable et pratique (si deja on la repere bien) ?

  6. #6
    Expert éminent
    Avatar de Emmanuel Delahaye
    Profil pro
    Retraité
    Inscrit en
    Décembre 2003
    Messages
    14 512
    Détails du profil
    Informations personnelles :
    Âge : 68
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2003
    Messages : 14 512
    Par défaut
    Citation Envoyé par pmier Voir le message
    Juste pour savoir, bien sur les variables globales sont globalement a proscrire mais n'y a t'il pas certains cas ou cela est qd mm preferable et pratique (si deja on la repere bien) ?
    Il y a des cas où elles sont indispensables. Ces cas sont très rares et doivent être parfaitement justifiés et documentés.

    Si elle ne sont pas indispensable, c'est simple, on s'en passe. Point.

    Nota : Bien sûr, on parles de variables globales ou statiques modifiables. Si ce sont des const (lecture seule) aucun problème.

  7. #7
    Expert confirmé

    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    10 610
    Détails du profil
    Informations personnelles :
    Âge : 67
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 10 610
    Billets dans le blog
    2
    Par défaut
    et je rajouterais qu'il faut faire la distinction entre variables globales à 1 MODULE (un fichier), qui sont à limiter le plus possible, mais dont parfois on ne peut se passer, et variables globales à PLUSIEURS MODULES (fichiers), qui comme l'a dit Emmanuel sont A PROSCRIRE !!!! (bien sûr comme il l'a dit à part les constantes).

  8. #8
    Expert éminent
    Avatar de Emmanuel Delahaye
    Profil pro
    Retraité
    Inscrit en
    Décembre 2003
    Messages
    14 512
    Détails du profil
    Informations personnelles :
    Âge : 68
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2003
    Messages : 14 512
    Par défaut
    Citation Envoyé par souviron34 Voir le message
    et je rajouterais qu'il faut faire la distinction entre variables globales à 1 MODULE (un fichier), qui sont à limiter le plus possible, mais dont parfois on ne peut se passer, et variables globales à PLUSIEURS MODULES (fichiers), qui comme l'a dit Emmanuel sont A PROSCRIRE !!!! (bien sûr comme il l'a dit à part les constantes).
    Oui, tu mets en avant les problèmes liés à la portabilité et tu as raison, mais le terme 'globales' recouvre aussi le problème des variables persistantes à instanciation uniques (singleton dans d'autres langages, enfin, je crois...), que sont les variables statiques en général (quelles que soient leurs portées). Ce genre de variable plombe le code en empêchant toute instanciation, car la règle sacro-sainte de la séparation du code et des données a été brisée...

    (et évidemment toute utilisation 'imbriquée' ou multi-tâche devient impossible : strtok() etc.)

  9. #9
    Membre confirmé
    Profil pro
    Inscrit en
    Août 2007
    Messages
    98
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2007
    Messages : 98
    Par défaut
    Emmanuel que voulais-tu dire quand tu disais en reponse a souviron 34

    Citation Envoyé par souviron34 Voir le message
    et je rajouterais qu'il faut faire la distinction entre variables globales à 1 MODULE (un fichier), qui sont à limiter le plus possible, mais dont parfois on ne peut se passer, et variables globales à PLUSIEURS MODULES (fichiers), qui comme l'a dit Emmanuel sont A PROSCRIRE !!!! (bien sûr comme il l'a dit à part les constantes).
    Oui, tu mets en avant les problèmes liés à la portabilité et tu as raison, mais le terme 'globales' recouvre aussi le problème des variables persistantes à instanciation uniques (singleton dans d'autres langages, enfin, je crois...), que sont les variables statiques en général (quelles que soient leurs portées).
    J'avais compris que tu voulais dire que ca gêne pour la réutilisation des fonctions du fait du risque d'une variable de mm nom dans le nouveau code (meme si je suis pas sur que ca s'appel portabilité)

    Pour les autres exemples merci je suis convaincu

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

Discussions similaires

  1. Redirection de stdout en C vers Python
    Par makia42 dans le forum PyQt
    Réponses: 11
    Dernier message: 05/04/2011, 21h03
  2. Réponses: 4
    Dernier message: 16/04/2008, 19h54
  3. Redirection stdin / stdout
    Par Neitsa dans le forum Linux
    Réponses: 3
    Dernier message: 17/02/2007, 15h57
  4. Redirection de stdout en C
    Par gege2061 dans le forum Linux
    Réponses: 4
    Dernier message: 06/03/2006, 15h49

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