Passage de parametres

LaKiks51 Messages postés 13 Date d'inscription mercredi 16 mai 2007 Statut Membre Dernière intervention 3 août 2007 - 3 août 2007 à 11:57
cs_omnia Messages postés 240 Date d'inscription jeudi 9 janvier 2003 Statut Membre Dernière intervention 22 mars 2009 - 4 août 2007 à 11:49
Bonjour,


je cherche à savoir comment on récupère un paramètre un poil particulier...

Mon appli est un scan de port, j'aimerais que l'utilisateur choisisse les ports
qu'il veut scanner. Pour cela, j'aimerais que lors de l'exécution de l'appli
(en ligne de commande) il puisse saisir les ports à scanner (« Scan 80 21
23 161 162… »). Comment faire pour récupérer ces ports sachant
que je ne connais pas le nombre de ports qui vont être saisis?
Je pense qu'il faudrait utiliser les "" de manière
à ce que les "argc, argv" voit cela comme un seul paramètre mais j’aimerais
un peu plus de précision si c’était le cas.


Merci

3 réponses

cs_rt15 Messages postés 3874 Date d'inscription mardi 8 mars 2005 Statut Modérateur Dernière intervention 7 novembre 2014 13
3 août 2007 à 12:52
Salut,

Je comprend pas ce qui te dérange d'avoir un jolie tableau avec un port par case dans argv et le nombre de ports dans argc.
Si tu veux une chaîne avec tous tes ports dedans, calcul sa tailleà partir de argc/argv, alloue la avec malloc, et utilise strcat si tu fais du C.
0
luhtor Messages postés 2023 Date d'inscription mardi 24 septembre 2002 Statut Membre Dernière intervention 28 juillet 2008 6
3 août 2007 à 14:15
#include
#include <sstream>

int main(int argc, char * argv[])
{
if (argc > 1)
{
    const unsigned int portNumber = argc-1;

    unsigned short * pPort = new unsigned short[portNumber];

    for (unsigned short k = 0 ; k < portNumber ; ++k)
    {
         std::istringstream iss(argv[k+1]); // Le premier c'est le nom de l'éxécutable
        
         if (!(iss >> pPort[k]) || !iss.eof())
         {
              std::cout << "Un des arguments n'est pas correct" << std::endl;
              delete[] pPort;
              return -1;
         }
    }

    // Et la tu as ton tableau de port

   delete[] pPort;
   return 0;
}
else
    std::cout << "Usage ... " << std::endl;

return 0;
};

C'est fait rapidement et non testé mais ca doit marcher ou pas loin de l'etre.
0
cs_omnia Messages postés 240 Date d'inscription jeudi 9 janvier 2003 Statut Membre Dernière intervention 22 mars 2009
4 août 2007 à 11:49
Un petit plus d'explication, lorsque tu code en mode console, tu as ton main sous la forme:

int main(int argc, char * argv[])
{
 ...
return 0;
}

argc représente le nombre d'arguments passés

et argv, le tableau des arguments

plus qu'a traiter avec une boucle, comme sous l'exemple de [auteurdetail.aspx?ID=15482 luhtor]

bye et bn codage
0
Rejoignez-nous