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

MFC Discussion :

récupérer le résultat avec "system()"


Sujet :

MFC

  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    112
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Avril 2006
    Messages : 112
    Par défaut récupérer le résultat avec "system()"
    Bonjour,
    j'utilise actuelement la fonction qui me permet, dans mon application dos, de récupérer à l'écran l'arborécence, mais comment récupérer le texte affiché?
    merci d'avance

  2. #2
    Membre Expert
    Avatar de hiko-seijuro
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    2 011
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France

    Informations forums :
    Inscription : Mai 2004
    Messages : 2 011
    Par défaut
    il faut que tu utilises les tubes

  3. #3
    Rédacteur
    Avatar de nico-pyright(c)
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    6 414
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 6 414
    Par défaut
    y a rien de plus berk que de faire un system(dir)

    si tu veux lister des fichiers : http://c.developpez.com/faq/vc/?page=Fichiers

    si tu veux récupérer la sortie d'un programme : http://c.developpez.com/faq/vc/?page...CatchDosOutput

  4. #4
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    112
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Avril 2006
    Messages : 112
    Par défaut
    J'ai essayé le second exemple cité ici:
    et j'ai un pb: &api n'est pas définit, comme je suis avec une application console, si je passe en application windows ça marchera ? je fais comment pour mes printf si c'est une application windows(la question ne se pose peux être pas, j'ai jamais fait de prg en win32)?

  5. #5
    Rédacteur
    Avatar de nico-pyright(c)
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    6 414
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 6 414
    Par défaut
    c'est pas &api, mais &pi ... ptite faute dans la faq ...
    Farscaaaape ?

  6. #6
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    112
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Avril 2006
    Messages : 112
    Par défaut
    merci, mais je n'arrive pas à en faire ce que je veux:
    par exemple si je fais executeCmdWithRedirection("dir", "sortie.txt"), j'optiens rien dans sortie...

  7. #7
    Rédacteur
    Avatar de nico-pyright(c)
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    6 414
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 6 414
    Par défaut
    alors, au risque de me répeter, il ne faut pas utiliser dir

    Si tu veux lister les répertoires, il faut utiliser l'API Win32

    De plus, c'est normal que la fonction que tu veux utiliser ne marche pas, car "dir" est une commande dos, qui ne fonctionne que grace à l'interpréteur de commande. Pour ce genre de cas, il faut utiliser la premiere solution, mais je répete que pour lister, il vaut mieux passer par l'api win32

  8. #8
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    112
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Avril 2006
    Messages : 112
    Par défaut
    oui, oui je suis d'accord, le 'dir' n'est qu'un exemple, en fait je veux pouvoir utiliser toute les commande dos et récupérer les sotie, pas dans un fichier mais dans une chaine de caractère, ce qui corse un peu le truc, désolé de t'avoir fais répété, j'ai pas été clair sur ce que je voulais

  9. #9
    Rédacteur
    Avatar de nico-pyright(c)
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    6 414
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 6 414
    Par défaut
    il te suffit, en utilisant la premiere solution, d'ouvrir le fichier et de le copier dans une chaine

  10. #10
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    112
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Avril 2006
    Messages : 112
    Par défaut
    dans ce cas j'ai un nouveau problème:
    je n'arrive pas à tout récupérer et tout afficher du fichier texte:

    le contenu du fichier texte:
    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
     
     Le volume dans le lecteur C n'a pas de nom.
     Le num‚ro de s‚rie du volume est 1CPC-A1CO
     
     R‚pertoire de C:\Program Files\Microsoft Visual Studio\MyProjects\test
     
    08/06/2006  17:08    <REP>          .
    08/06/2006  17:08    <REP>          ..
    08/06/2006  17:08    <REP>          Debug
    08/06/2006  17:08             2ÿ542 main.cpp
    08/06/2006  17:08            14ÿ196 result.txt
    08/06/2006  16:28             4ÿ199 test.dsp
    08/06/2006  16:28               533 test.dsw
    08/06/2006  16:28            25ÿ600 test.ncb
    08/06/2006  17:08               880 test.plg
                   6 fichier(s)           47ÿ950 octets
                   3 R‚p(s)   9ÿ731ÿ588ÿ096 octets libres
    mon code :
    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
    void lecture (void)
    {
    	FILE *fichier ;
    	int i ;
    	float x[25], y ;
    	char text[3000];
     
    	fichier = fopen ("result.txt", "rt") ;
     
    	if (fichier == NULL) {
    	    printf ("impossible de créer le fichier mon_fichier.txt\n") ;
    	    exit (0) ;
    				}
    	fgets(text,3000,fichier);
    	printf("%s ",text);
     
    	fclose (fichier) ;
    résultat:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     Le volume dans le lecteur C n'a pas de nom.
    c'est comme s'il s'arrêtai à la première \n

    comment faire?
    merci d'avance

  11. #11
    Rédacteur
    Avatar de nico-pyright(c)
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    6 414
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 6 414
    Par défaut
    c'est normal, une chaine de caractère se termine par un \0
    donc, quand il en trouve un, il n'affiche pas ce qu'il y a derriere, meme s'il y a quelque chose


    de plus, pour la manipulation des fichiers, je te conseille de lire http://c.developpez.com/faq/vc/?page...#WorkWithFiles et les suivantes

    notamment la mise en buffer

  12. #12
    Membre chevronné Avatar de Mayti4
    Inscrit en
    Février 2004
    Messages
    442
    Détails du profil
    Informations forums :
    Inscription : Février 2004
    Messages : 442
    Par défaut
    c'est comme s'il s'arrêtai à la première \n
    Effectivement, c'est le comportement normal de fgets.

    Il faut utiliser fgets dans une boucle.

  13. #13
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    112
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Avril 2006
    Messages : 112
    Par défaut
    Ok mon code marche pour récupérer les sorties de programme, mais j'ai pas l'impression que c'est ce qu'il faut, je m'explique:
    quand je fais un "dir" je récupère bien l'affichage mais si je tape "@echo bonjour" je ne récupère pas "bonjour" (sortie dos prévue), par exemple. Même chose pour une commande non valide. Bref je pense qu'il faut changer pour une autre méthode... des idées?.. je sèche..

Discussions similaires

  1. Récupérer le résultat d'un system("...")
    Par the_penguin dans le forum C
    Réponses: 7
    Dernier message: 07/04/2006, 18h35

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