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

Langage C++ Discussion :

_popen et écriture dans un fichier


Sujet :

Langage C++

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre très actif
    Profil pro
    Inscrit en
    Novembre 2002
    Messages
    220
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2002
    Messages : 220
    Par défaut _popen et écriture dans un fichier
    Bonjour,

    je voudrais pouvoir exécuter une commande à l'aide de _popen puis d'écrire le texte affiché par cette commande, voici le 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
     
    	FILE *fp;
    	fp = _popen("DIR", "r");
     
    	if (fp != NULL) {
    		char buffer[300000];
    		while (fgets(buffer, sizeof buffer, fp) != NULL);
     
    		FILE* file; 
     		file = fopen("c:\\fichier.dat", "w" );
     		fprintf( file , "%s" , buffer );
     
    		fclose(file); 
     
    	}
    Tout est OK mais il y a un problème d'encodage. Sauriez-vous me dire comment faire pour lire le fichier fichier.dat?

  2. #2
    Expert éminent
    Avatar de koala01
    Homme Profil pro
    aucun
    Inscrit en
    Octobre 2004
    Messages
    11 644
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : Belgique

    Informations professionnelles :
    Activité : aucun

    Informations forums :
    Inscription : Octobre 2004
    Messages : 11 644
    Par défaut
    Salut,

    Je ne répondrai pas à la question, mais il y a deux choses sur lesquelles je voudrais attirer ton attention:

    1- Ce code semble être du C et non du C++... Tu sembles donc t'être trompé de section.

    Veux tu que nous déplacions ce message, ou souhaite tu effectivement coder en C++ (auquel cas, nous te donnerons sans doutes des solutions... très différentes).

    2- De manière générale, il est très largement préférable d'éviter tout ce qui est préfixé par l'underscore "_" ou le double underscore "__".

    Traditionnellement (mieux, c'est la norme qui l'indique ), ce sont des fonctions / types de données / variables propres à l'implémentation, qui n'offrent donc strictement aucune garantie de portabilité, non seulement en terme de fournisseur de compilateur, mais, pire encore, entre deux versions de compilateurs différentes émanant d'un même fournisseur.
    A méditer: La solution la plus simple est toujours la moins compliquée
    Ce qui se conçoit bien s'énonce clairement, et les mots pour le dire vous viennent aisément. Nicolas Boileau
    Compiler Gcc sous windows avec MinGW
    Coder efficacement en C++ : dans les bacs le 17 février 2014
    mon tout nouveau blog

  3. #3
    Membre très actif
    Profil pro
    Inscrit en
    Novembre 2002
    Messages
    220
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2002
    Messages : 220
    Par défaut
    merci pour ta réponse,

    en fait, ce code doit être intégré dans un projet c++, j'ai commencé en utilisant la fonction createProcess, mais je ne suis pas parvenu à récupérer le résultat des commandes passées... et j'ai trouvé ce bout de code c donc je m'en suis servi.

    En réponse à tes questions, ce projet ayant pour but de créer un plugin de gestion de téléchargement pour chromium en utilisant wget, il faudrait mieux que le code soit portable et qu'il soit en c++.

  4. #4
    Modérateur
    Avatar de bruno_pages
    Homme Profil pro
    ingénieur informaticien à la retraite
    Inscrit en
    Juin 2005
    Messages
    3 545
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 65
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : ingénieur informaticien à la retraite
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Juin 2005
    Messages : 3 545
    Par défaut
    Bonjour,

    seule la dernière ligne retournée par la commande sera placée dans fichier.dat, vu que la commande est un dir je ne pense pas que ce soit le but recherché. fgets ne lit qu'une ligne et ne fait pas progresser le pointeur, donc votre boucle n'est pas bonne. De plus supposer une taille donnée dans le résultât n'est pas la bonne technique

    ceci dit si le but est de placer le résultât d'une commande dans un fichier je ne vois pas très bien l'intérêt du popen, autant faire un truc du style system("DIR > c:\\fichier.dat");
    Bruno Pagès, auteur de Bouml (freeware), mes tutoriels sur DVP (vieux, non à jour )

    N'oubliez pas de consulter les FAQ UML et les cours et tutoriels UML

Discussions similaires

  1. Réponses: 3
    Dernier message: 18/08/2005, 11h57
  2. [PERL] Problème lecture/écriture dans un fichier
    Par LE NEINDRE dans le forum Langage
    Réponses: 4
    Dernier message: 17/08/2005, 13h15
  3. Problème d'écriture dans un fichier xml
    Par vanoou dans le forum C++Builder
    Réponses: 1
    Dernier message: 13/07/2005, 02h28
  4. Passer à la ligne lors de l'écriture dans un fichier
    Par hams dans le forum Assembleur
    Réponses: 4
    Dernier message: 17/04/2005, 19h25
  5. [JUnit] Junit écriture dans un fichier
    Par mikael35 dans le forum Tests et Performance
    Réponses: 1
    Dernier message: 10/08/2004, 13h11

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