Gestion de commande system

Signaler
Messages postés
28
Date d'inscription
vendredi 1 janvier 2010
Statut
Membre
Dernière intervention
10 août 2010
-
Messages postés
28
Date d'inscription
vendredi 1 janvier 2010
Statut
Membre
Dernière intervention
10 août 2010
-
Bonjour.

pour un projet je doit afficher le ping d'une adresse internet en C.

j'utilise donc une des commandes system(" ");

quand j'ai commençais je me suis dit que ça aller être facile jusqu'à que je ne puisse par récupérer l'adresse :/

voila ma source:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <windows.h>
static void purger(void)
{
    int c;

    while ((c = getchar()) != '\n' && c != EOF)
    {}
}

static void clean (char *chaine)
{
    char *p = strchr(chaine, '\n');

    if (p)
    {
        *p = 0;
    }

    else
    {
        purger();
    }
}
int main(int argc, char *argv[])
{
printf("Nom de l'adresse: "); /*je demande de rentrer l'adresse à tester*/
  fgets(chaine, sizeof chaine, stdin);
  clean(chaine);
  printf("\ntraitement de %s en cour\n", chaine);
  sleep(2000);
  system("ping %s", chaine); /* erreur dut au faite d'argument qui ne conviennent pas */ 
                              
  getch();
 return 0;
}



comment contourner se problème ? ou alors m'expliquer en détaille comment marche la fonction ping pour la recréer en C

2 réponses

Messages postés
1309
Date d'inscription
samedi 31 janvier 2009
Statut
Membre
Dernière intervention
5 juin 2013
12
Salut,

system() ne prends pas une liste d'arguments variables comme printf et ses congénères.
Il faudrait penser à définir tes variables, par exemple "chaine" n'est pas définie.
Ta fonction purger() est inutile et ne fais pas du tout ce que son nom suggère.
clean() est également inutile.
L'appel à sleep() et getch() sont eux aussi inutiles.

Je doute également que ton projet soit aussi simple que de faire appel à un programme externe...

ou alors m'expliquer en détaille comment marche la fonction ping pour la recréer en C

Oui, il serait mieux de recoder ce programme par toi même, quoique vu ce que tu as fait je doute fortement que tu dispose du niveau nécessaire pour ceci. Dans tous les cas, commencer par regarder sur google code ce qu'ont fait les autres est une bonne idée :
http://www.google.com/codesearch?q=ping+lang%3Ac&hl=en&btnG=Search+Code
Messages postés
28
Date d'inscription
vendredi 1 janvier 2010
Statut
Membre
Dernière intervention
10 août 2010

ok merci mais j'ai trouvé comment régler mon problème.

char command[1024];
  sprintf(command, "ping %s", chaine);
  system(command);