Gestion de commande system

cs_Adict Messages postés 28 Date d'inscription vendredi 1 janvier 2010 Statut Membre Dernière intervention 10 août 2010 - 30 mai 2010 à 14:08
cs_Adict Messages postés 28 Date d'inscription vendredi 1 janvier 2010 Statut Membre Dernière intervention 10 août 2010 - 30 mai 2010 à 17:21
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

TychoBrahe Messages postés 1309 Date d'inscription samedi 31 janvier 2009 Statut Membre Dernière intervention 5 juin 2013 12
30 mai 2010 à 14:31
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
0
cs_Adict Messages postés 28 Date d'inscription vendredi 1 janvier 2010 Statut Membre Dernière intervention 10 août 2010
30 mai 2010 à 17:21
ok merci mais j'ai trouvé comment régler mon problème.

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