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 :

Rediriger une sortie vers un fichier texte


Sujet :

C

  1. #1
    Nouveau membre du Club
    Inscrit en
    Février 2008
    Messages
    67
    Détails du profil
    Informations forums :
    Inscription : Février 2008
    Messages : 67
    Points : 31
    Points
    31
    Par défaut Rediriger une sortie vers un fichier texte
    Bonjour,

    J'aurai 2 questions :

    - Je voudrais rediriger la sortie d'un system("ping") vers un fichier texte, comment faire ? Sachant que le fichier texte n'existera pas à la base.
    - J'ai enchainer d'autres commandes, j'aimerais donc compiler l'ensemble dans un seul fichier texte (donc ne pas écraser la sortie de ping, mais rajouter le reste à la suite du fichier, avec un minimum de formattage, par exemple mettre un "------------------" entre chaque sortie de façon à ce que le log ressemble à quelquechose).

    Merci à vous !

  2. #2
    Rédacteur
    Avatar de Arnaud F.
    Homme Profil pro
    Développeur COBOL
    Inscrit en
    Août 2005
    Messages
    5 183
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France

    Informations professionnelles :
    Activité : Développeur COBOL
    Secteur : Finance

    Informations forums :
    Inscription : Août 2005
    Messages : 5 183
    Points : 8 873
    Points
    8 873
    Par défaut
    Salut,

    Dans la continuité du shell, tu peux enregistrer le retour du ping de la manière suivante :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    system("ping >tonFichier");
    Cela ne se fait donc pas en C mais sous le Shell.

    Pour rajouter le contenu des autres commandes à la suite du fichier, tu peux faire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    system("Ta Commande >>tonFichier");
    Le simple chevron permet d'écraser le contenu du fichier s'il existe et de le créer s'il n'existe pas.
    Le double chevron permet de rajouter le contenu à la fin du fichier

    ++
    C'est par l'adresse que vaut le bûcheron, bien plus que par la force. Homère

    Installation de Code::Blocks sous Debian à partir de Nightly Builds

  3. #3
    Nouveau membre du Club
    Inscrit en
    Février 2008
    Messages
    67
    Détails du profil
    Informations forums :
    Inscription : Février 2008
    Messages : 67
    Points : 31
    Points
    31
    Par défaut
    Attention, je code ça sous windows. J'aurais du le préciser.. voici 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
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    #include <stdio.h>
    #include <stdlib.h>
    #include <windows.h>
    #include <string.h>
     
    static void searchchar(char *chaine);
     
    int main(int argc, char *argv[])
    {
     
        char ip[12] = {0};
        printf("\nAdresse ip : ");
        fgets(ip, sizeof ip, stdin);
        searchchar(ip);
     
        char out[] = " > testip.txt";
        char commande [512];
     
        strcpy(commande, "ping "); 
        strcat(commande, ip);
        strcat(commande, out);
     
        int ret = system (commande);
     
        if (ret==1)
        {
           printf("\nHote %s injoignable \n\n", ip);
           system("pause");
           return 0;
        }
     
    system("pause");
    return 0;
    }
     
    static void searchchar(char *chaine)
    {
        char *p = strchr(chaine, '\n');
     
        if (p)
        {
            *p = 0;
        }
    }
    En admettant 2 choses :

    1) Que je veuille ajouter d'autres commandes, comment dois-je organiser mon code ?

    2) Que je suis sous windows =) Donc gestion de l'ouverture des fichiers etc..

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

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2003
    Messages : 14 512
    Points : 20 985
    Points
    20 985
    Par défaut
    Citation Envoyé par nuitn0ire Voir le message
    Attention, je code ça sous windows. J'aurais du le préciser.. voici mon code :
    <...>
    Ceci
    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
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
     
    #include <stdio.h>
    #include <stdlib.h>
    #include <string.h>
     
    static void searchchar (char *chaine)
    {
       char *p = strchr (chaine, '\n');
     
       if (p)
       {
          *p = 0;
       }
    }
     
    int main (void)
    {
     
       char ip[sizeof "xxx.xxx.xxx.xxx\n"];
     
       printf ("\nAdresse ip : ");
       fgets (ip, sizeof ip, stdin);
       searchchar (ip);
     
       {
          char out[] = " > testip.txt";
          char commande[512];
     
          strcpy (commande, "ping ");
          strcat (commande, ip);
          strcat (commande, out);
          {
             int ret = system (commande);
     
             if (ret == 1)
             {
                printf ("\nHote %s injoignable \n\n", ip);
                system ("pause");
             }
             else
             {
                system ("type testip.txt");
             }
          }
       }
       return 0;
    }
    donne cela:
    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
     
     
    Adresse ip : 192.168.0.1
     
    Envoi d'une requête 'ping' sur 192.168.0.1 avec 32 octets de données :
     
    Réponse de 192.168.0.1 : octets=32 temps=5 ms TTL=254
    Réponse de 192.168.0.1 : octets=32 temps=4 ms TTL=254
    Réponse de 192.168.0.1 : octets=32 temps=3 ms TTL=254
    Réponse de 192.168.0.1 : octets=32 temps=3 ms TTL=254
     
    Statistiques Ping pour 192.168.0.1:
        Paquets : envoyés = 4, reçus = 4, perdus = 0 (perte 0%),
    Durée approximative des boucles en millisecondes :
        Minimum = 3ms, Maximum = 5ms, Moyenne = 3ms
     
    Press ENTER to continue.
    Pas de Wi-Fi à la maison : CPL

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

Discussions similaires

  1. Réponses: 2
    Dernier message: 15/04/2009, 00h11
  2. comment copier une table vers un fichier texte ou le contraire
    Par kham40 dans le forum Bases de données
    Réponses: 3
    Dernier message: 04/11/2006, 13h51
  3. Réponses: 8
    Dernier message: 28/09/2006, 15h56
  4. Réponses: 1
    Dernier message: 21/07/2006, 11h54

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