Partage
  • Partager sur Facebook
  • Partager sur Twitter

Arguments de main

Récupérer une chaine de caractères

Sujet résolu
    12 juillet 2007 à 1:17:20

    Bonsoir !

    Je voudrai faire un même programme dans lequel il y aurait les interfaces graphiques, le son et la communication extérieur(création/modification de fichiers).

    Maintenant si je veu le même programme pour le serveur et le client je voudrais pouvoir me débarrasser de la partie graphique pour le serveur en vérifiant l'argument passer au programme.

    Ainsi sans aucun argumentle programme se lance normalement(mode client) et avec argument le programme se lancerait sans interface graphique et sans son(mode serveur) pour améliorer les performances.
    Etant donné que le mode serveur servirai juste à héberger une partie l'absence de graphisme et de son permettrais de faire tourner un serveur sur une vieille machine ne servant plus ;).

    Donc je créer un raccourci du programme pour pouvoir ajouter un argument, j'ajoute "serveurmode" comme argument à la fin de la cible.

    Dans le programme je récupère le tout avec argc et argv[].
    Comme ceci :

    int main(int argc, char *argv[])
    {
        if(argv[1] == "serveurmode")
        {
            cout << "Plop" << endl;
            system("PAUSE");
        }
       
        system("PAUSE");
        return 0;
    }


    Quand je lance le programme avec le raccourci (donc avec l'argument) le Plop ne s'affiche pas.
    L'argument n'est donc pas identique à "serveurmode".
    Pourtant si je fais ceci :

    cout << argc << endl;

    for(int i = 0; i < argc; i++)
    {
        cout << argv[i] << endl;
    }

    system("PAUSE");


    Pour lire tout ce qui est contenu dans argv j'obtient ceci :

    2
    C:\Dev-Cpp\projet\C++\serveurmode.exe
    serveurmode
    Appuyez sur une touche pour continuer...


    J'en conclue qu'il y à bien un argment(le chemin et serveurmode, deux au total) donc que la deuxième case de argv contient bien "serveurmode".
    Quelqu'un sait pourquoi la condition échoue-t-elle si l'argument est bien là ?

    Merci!
    • Partager sur Facebook
    • Partager sur Twitter
      12 juillet 2007 à 9:10:53

      Citation :

      Quelqu'un sait pourquoi la condition échoue-t-elle si l'argument est bien là ?


      L'argument est bien là, mais on ne compare pas des char* comme ça, il faut passer par des fonctions prévues pour ( strcmp() par exemple ).
      Si tu ne maitrisie pas les bases, ça ne va pas être évident pour la suite.. !

      D'autre part, il convient de vérifier si argv[1] existe (via argc) avant de tester sa valeur.
      Mais tu as peut être fais ça just pour l'exemple..
      • Partager sur Facebook
      • Partager sur Twitter
        12 juillet 2007 à 10:13:53

        Arf oui j'avais complètement oublier strcmp !
        Merci beaucoup !
        La j'avais mis argv[1] parceque je savais qu'il y avait un argument, sinon je mettrais toujours argv[argc - 1] pour tester le dernier argument la dessus c'etait déjà prévu :p

        Merci.
        Bon bah sujet résolu !
        • Partager sur Facebook
        • Partager sur Twitter

        Arguments de main

        × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
        × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
        • Editeur
        • Markdown