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

  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    mai 2002
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : mai 2002
    Messages : 4
    Points : 5
    Points
    5
    Par défaut [Resolu]récupération des données avec la fonction system()
    Bonjour,
    j'amerais savoir comment je pourrais faire pour récupérer(mettre dans une chaîne de caractère ou autre) ce qui s'affiche sur la console lorsque je fais, par exemple, un
    system("dir");


    merci
    --------------------
    Tag [Resolu] ajouté par LFE

  2. #2
    Expert éminent sénior
    Avatar de adiGuba
    Homme Profil pro
    Développeur Java/Web
    Inscrit en
    avril 2002
    Messages
    13 938
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Java/Web
    Secteur : Transports

    Informations forums :
    Inscription : avril 2002
    Messages : 13 938
    Points : 23 004
    Points
    23 004
    Billets dans le blog
    1
    Par défaut
    Salut,

    Utilises la fonction popen() :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    char buffer[256];
    FILE* cmd = popen ("dir", O_RDONLY);
     
    while (fgets, 256, cmd) != NULL)
    {
              printf ("DIR : %s", buffer);
    }
    pclose (f);
    a++

  3. #3
    Membre régulier
    Profil pro
    Inscrit en
    mars 2003
    Messages
    65
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : mars 2003
    Messages : 65
    Points : 73
    Points
    73
    Par défaut
    Une façon simple est de rediriger la sortie dans un fichier. Par exemple:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    system("dir > dir.txt");
    Et puis de lire le fichier produit (ici: dir.txt).

    axile

  4. #4
    Futur Membre du Club
    Profil pro
    Inscrit en
    mai 2002
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : mai 2002
    Messages : 4
    Points : 5
    Points
    5
    Par défaut
    super!!
    merci

  5. #5
    Futur Membre du Club
    Profil pro
    Inscrit en
    mai 2002
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : mai 2002
    Messages : 4
    Points : 5
    Points
    5
    Par défaut
    Bonjour,
    je voudrais savoir s'il est possible d'aller lire dans un fichier créé lors d'un
    system("dir > dir.txt).
    (je veux lire le fichier dir.txt)
    merci

  6. #6
    Membre régulier
    Profil pro
    Inscrit en
    mars 2003
    Messages
    65
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : mars 2003
    Messages : 65
    Points : 73
    Points
    73
    Par défaut
    Certainement que c'est possible, voici un exemple:

    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
    int main(int argc, char *argv[])
    {
    FILE        *fichier;
    int          c;
     
     
    /* Ouvrir le fichier en lecture */
    fichier = fopen("dir.txt", "r");
     
    /* Écrire son contenu à l'écran */
    while (1)  {
      c = getc(fichier);
      if (c == EOF)  break;
      putc(c, stdout);
    }
     
    fclose(fichier);
     
    return 0;
     
    }
    axile

  7. #7
    Expert éminent sénior
    Avatar de adiGuba
    Homme Profil pro
    Développeur Java/Web
    Inscrit en
    avril 2002
    Messages
    13 938
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Java/Web
    Secteur : Transports

    Informations forums :
    Inscription : avril 2002
    Messages : 13 938
    Points : 23 004
    Points
    23 004
    Billets dans le blog
    1
    Par défaut
    Heu...

    juste pour signaler que popen() fait ca tout seul sans créer de fichier qu'il faudrat effacer après...

    Pourquoi se compliquer la vie ???

  8. #8
    Membre régulier
    Profil pro
    Inscrit en
    mars 2003
    Messages
    65
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : mars 2003
    Messages : 65
    Points : 73
    Points
    73
    Par défaut
    Tu as bien raison adiGuba c'est encore plus simple. Cette fonction n'est pas standard (enfin je crois), mais à part ça je suis toujours preneur de solutions simples et élégantes.

    axile

  9. #9
    gl
    gl est déconnecté
    Rédacteur

    Homme Profil pro
    Inscrit en
    juin 2002
    Messages
    2 165
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Isère (Rhône Alpes)

    Informations forums :
    Inscription : juin 2002
    Messages : 2 165
    Points : 4 483
    Points
    4 483
    Par défaut
    Citation Envoyé par axile
    Tu as bien raison adiGuba c'est encore plus simple. Cette fonction n'est pas standard (enfin je crois), mais à part ça je suis toujours preneur de solutions simples et élégantes.

    axile
    Non elle n'est pas standard, mais system("dir") ne l'est pas non plus donc l'un dans l'autre ce n'est pas tres genant.

  10. #10
    Expert éminent sénior
    Avatar de adiGuba
    Homme Profil pro
    Développeur Java/Web
    Inscrit en
    avril 2002
    Messages
    13 938
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Java/Web
    Secteur : Transports

    Informations forums :
    Inscription : avril 2002
    Messages : 13 938
    Points : 23 004
    Points
    23 004
    Billets dans le blog
    1
    Par défaut
    heu...

    system() est portable...
    c'est system("dir") qui n'est pas portable...


    system() est conforme avec : ANSI C, POSIX.2 et BSD 4.3
    popen() est conforme avec POSIX.2

    Question: combien de compilateur ne sont pas compatible POSIX.2 ???

  11. #11
    gl
    gl est déconnecté
    Rédacteur

    Homme Profil pro
    Inscrit en
    juin 2002
    Messages
    2 165
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Isère (Rhône Alpes)

    Informations forums :
    Inscription : juin 2002
    Messages : 2 165
    Points : 4 483
    Points
    4 483
    Par défaut
    Citation Envoyé par adiGuba
    heu...

    system() est portable...
    c'est system("dir") qui n'est pas portable...


    system() est conforme avec : ANSI C, POSIX.2 et BSD 4.3
    popen() est conforme avec POSIX.2

    Question: combien de compilateur ne sont pas compatible POSIX.2 ???
    C'est bien de system("dir") et non de system que je parlait en disant que ce n'etait pas portable. Mais de toute maniere vu que systeme appel l'interpreteur de commande du systeme sur lequel l'application tourne, il me semble assez compromis de fire du code portable avec des system.

    Concernant les compilateurs non compatible POSIX.2, je ne peut pas te faire une liste exhaustive, mais deja Borland C++ 5 ne l'est pas (tout au moins popen n'apparait pas dans l'aide).

  12. #12
    Expert éminent sénior
    Avatar de adiGuba
    Homme Profil pro
    Développeur Java/Web
    Inscrit en
    avril 2002
    Messages
    13 938
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Java/Web
    Secteur : Transports

    Informations forums :
    Inscription : avril 2002
    Messages : 13 938
    Points : 23 004
    Points
    23 004
    Billets dans le blog
    1
    Par défaut
    gl : autant pour moi j'ai lu ton post trop vite...

    Pour BC++ ca m'étonne qu'il ne soit pas posix !!!
    Perso j'utilise gcc même sous windows...

  13. #13
    Membre régulier
    Profil pro
    Inscrit en
    mars 2003
    Messages
    65
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : mars 2003
    Messages : 65
    Points : 73
    Points
    73
    Par défaut
    Avec BC++ les fonctions qui ne sont pas compatibles ANSI C ont souvent leur nom précédé d'un trait de soulignement. C'est le cas de popen() qu'on retrouve sous le nom de _popen().

    axile

  14. #14
    gl
    gl est déconnecté
    Rédacteur

    Homme Profil pro
    Inscrit en
    juin 2002
    Messages
    2 165
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Isère (Rhône Alpes)

    Informations forums :
    Inscription : juin 2002
    Messages : 2 165
    Points : 4 483
    Points
    4 483
    Par défaut
    Effectivement j'aurais du y penser a regarder _popen, mais ca ne change pas grand chose au probleme, le code avec popen ne sera pas portable sur BC++.

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

Discussions similaires

  1. [SQL] Récupération des données avec Criteria
    Par kenzoshin dans le forum Hibernate
    Réponses: 2
    Dernier message: 26/11/2012, 09h06
  2. récupération des données de la fonction imread
    Par Adem84 dans le forum Images
    Réponses: 12
    Dernier message: 08/02/2010, 13h33
  3. Réponses: 1
    Dernier message: 25/06/2007, 22h10
  4. [MySQL] Utilisation des fonctions des récupérations des données
    Par Konrad Florczak dans le forum PHP & Base de données
    Réponses: 4
    Dernier message: 27/10/2006, 16h17
  5. [MySQL] Problème de récupération des données dans une fonction
    Par highman dans le forum PHP & Base de données
    Réponses: 1
    Dernier message: 26/10/2006, 21h04

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