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 :

Récuperer des caractères imprimés sur stdout


Sujet :

C

  1. #1
    Membre confirmé
    Inscrit en
    Octobre 2005
    Messages
    141
    Détails du profil
    Informations personnelles :
    Âge : 33

    Informations forums :
    Inscription : Octobre 2005
    Messages : 141
    Par défaut Récuperer des caractères imprimés sur stdout
    Bonjour !

    J'aimerais savoir si l'on peut récupérer des caractères déjà affichés sur la console dans stdout.

    Je souhaite reprendre une chaine (qui se trouve sur stdout grâce à printf) et reafficher la même sans la connaître d'avance (je ne veux pas que les caractères se trouvent dans un tableau de char mais bien dans ce style : printf("...\n")

    Merci d'avance.

    Kr00pS

  2. #2
    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 Kr00pS
    J'aimerais savoir si l'on peut récupérer des caractères déjà affichés sur la console dans stdout.
    A ma connaissance, non. C'est à toi de mémoriser ce que tu as sorti.

    Il y a peut être des astuces systèmes, mais je ne les connais pas.

  3. #3
    Membre Expert Avatar de KiLVaiDeN
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    2 868
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 2 868
    Par défaut
    Salut,

    Je n'ai pas bien compris ta demande.

    Ce que tu peux faire, c'est tout d'abord générer une "chaine" via sprintf, puis, afficher cette chaine avec fprintf sur stdout ( tu auras alors mit le résultat sur le stdout, et tu auras conservé la trace dans ta chaine de départ )

    Pourquoi cette solution ne te convient pas ?

    A+

  4. #4
    Rédacteur/Modérateur
    Avatar de Trap D
    Profil pro
    Inscrit en
    Septembre 2003
    Messages
    4 942
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2003
    Messages : 4 942
    Par défaut
    Tu veux faire de la communication inter process ?
    "La haine seule fait des choix" - Koan Zen
    "Il ne faut pas être meilleur que les autres, il faut être meilleur que soi." Albert Jacquard
    "Ceux qui savent où ils ont posé leur parapluie ne sont pas alcooliques." - pgibonne.
    Faites du Prolog, ça vous changera les idées !
    Ma page Prolog
    Mes codes sources commentés

    Mon avatar : La Madeleine à la veilleuse de Georges de La Tour

  5. #5
    Membre confirmé
    Inscrit en
    Octobre 2005
    Messages
    141
    Détails du profil
    Informations personnelles :
    Âge : 33

    Informations forums :
    Inscription : Octobre 2005
    Messages : 141
    Par défaut
    Citation Envoyé par KiLVaiDeN
    Salut,

    Je n'ai pas bien compris ta demande.

    Ce que tu peux faire, c'est tout d'abord générer une "chaine" via sprintf, puis, afficher cette chaine avec fprintf sur stdout ( tu auras alors mit le résultat sur le stdout, et tu auras conservé la trace dans ta chaine de départ )

    Pourquoi cette solution ne te convient pas ?

    A+
    Parce que cette solution est trop contraignante.

    Citation Envoyé par Trap D
    Tu veux faire de la communication inter process ?
    Je ne sais pas de quoi tu veux parler.

    Mon idée était de faire une fonction "propre" pour les saisies, elle fonctionne comme scanf, et elle repose sur fgets et sscanf. Le problème se situe avant l'appel de cette fonction, c'est la que l'on appelle la fonction printf ou autre pour avertir l'utilisateur d'une saisie.

    Je veux récupérer cette chaîne (je n'ai pas envie de la construire grâce à un tableau de char, ça doit être fait dynamiquement, sinon c'est bien trop lourd dans le code) et à chaque saisie non conforme, la fonction de saisie fait un tour de boucle et remet la phrase d'avant la première saisie.

    Il y a une autre solution, transformer cette phrase en une phrase toute prête : "Erreur, mauvaise saisie, veuillez retaper : " mais ça ne me convient pas (défi personnel après tout).

    Désolé si c'est pas très clair. Je vois pas comment expliquer ça.

    Merci quand même pour vos réponses, c'est pas possible.

  6. #6
    Expert éminent
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 395
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 395
    Par défaut
    En fait, tu ne veux pas avoir à jouer avec sprintf(), car l'allocation mémoire est très contraignante. Ce qu'il te faudrait, c'est l'équivalent du ByteArrayOutputStream de java ou du MemoryStream de .Net...

    En C, je ne vois pas comment faire, à moins d'utiliser un fichier temporaire...
    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.

  7. #7
    Membre émérite

    Profil pro
    Inscrit en
    Août 2003
    Messages
    878
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2003
    Messages : 878
    Par défaut
    Bonjour,

    Citation Envoyé par Kr00pS
    Désolé si c'est pas très clair. Je vois pas comment expliquer ça.
    En effet, cela ne me semble pas très clair...

    Citation Envoyé par Kr00pS
    [...] on appelle la fonction printf ou autre pour avertir l'utilisateur d'une saisie.
    [...] à chaque saisie non conforme, la fonction de saisie fait un tour de boucle et remet la phrase d'avant la première saisie.

    Il y a une autre solution, transformer cette phrase en une phrase toute prête : "Erreur, mauvaise saisie, veuillez retaper : " mais ça ne me convient pas (défi personnel après tout).
    Si je compends bien, tu veux faire un truc du genre :
    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
    21
    fonction de saisie
     
        récupérer ce qui a été affiché par le dernier printf() dans phrase
     
        saisieCorrecte=Faux
     
        tant que saisieCorrecte==Faux
            attendre la saisie de l'utilisateur
            si ce que l'utilisateur a saisi est correct
                saisieCorrecte=Vrai
            sinon
                afficher phrase
            fin si
        fin tant que
     
    fin fonction de saisie
     
    fonction principale
        printf("vas-y, saisi un caractère si tu oses");
        appelle fonction de saisie
    fin fonction principale
    C'est ça ?

    Si oui, pourquoi ne pas faire ce qui suit ?
    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
    fonction de saisie attendant une phrase en paramètre
     
        saisieCorrecte=Faux
     
        Faire
            afficher la phrase reçue en paramètre
            attendre la saisie de l'utilisateur
            si ce que l'utilisateur a saisi est correct
                saisieCorrecte=Vrai
            Fin si
        tant que saisieCorrecte==Faux, re-Faire
     
    fin fonction de saisie
     
    fonction principale
        appelle fonction de saisie avec "vas-y, saisi un caractère si tu oses" comme paramètre
    fin fonction principale

Discussions similaires

  1. Récuperer des messages supprimes sur la messagerie portail orange
    Par michelle.eyraud dans le forum Internet
    Réponses: 1
    Dernier message: 18/04/2010, 19h22
  2. Afficher des caractères arabes sur console
    Par Alghero dans le forum C
    Réponses: 3
    Dernier message: 05/02/2010, 14h12
  3. Conversion des caractères spéciaux sur un événement onChange
    Par imagonem dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 10/04/2009, 22h45
  4. Récuperer des caractères Majuscules dans une chaine
    Par Loïc59 dans le forum Général VBA
    Réponses: 3
    Dernier message: 17/05/2007, 00h14

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