Résolu Aide en langage C

Solutions (13)
Tags :
  • Adresse IP
  • Logiciels
  • Echo
  • Programmation
|
Bonjour à tous le IDNautes,

Je suis actuellement en train de programmer un petit logiciel de jeu, mais je n'arrive pas à récupérer des données qui sont tapées via la commande Scanf.

Serait-il possible d'avoir de l'aide s'il-vous-plaît ?


Voici le code sur lequel je suis bloqué.

  1. #include <cstdlib>
  2. #include <iostream>
  3. #include <stdio.h>
  4.  
  5. typedef struct {
  6. char pseudo [10];
  7. char ip [16];
  8. char port [4];
  9. } personne;
  10.  
  11.  
  12. int main () {
  13. personne p;
  14. system("echo.");
  15. printf("Veuillez entrer le pseudo 'entre 1 et 10 carac' :\n");
  16. scanf("%s",p.pseudo);
  17. printf("Veuillez entrer l'adresse IP:\n");
  18. scanf("%s",p.ip);
  19. printf("Veuillez entrer le port:\n");
  20. scanf("%s",p.port);
  21.  
  22. system("cls");
  23. system("echo.");
  24.  
  25. printf("Voici les caracteristiques de cette personne:\n");
  26. printf("Pseudo=%s\n",p.pseudo);
  27. printf("@Ip=%s\n",p.ip);
  28. printf("Port=%s\n",p.port);
  29. system("cd E:\xxx\xxx\xxx");
  30. system("start xxx.exe ");
  31. system("PAUSE");
  32. return 0;
  33. }


Voilà, enfaite ce code lance un jeu codé en C ( qui se joue en LAN) et pour bien le paramétrer au lancement, j'ai besoin d'un pseudo, d'une adresse IP et d'un port.
Jusque là, j'ai réussi à demander tout cela à l'utilisateur du programme via la commande scanf, mais après je n'arrive pas à lancer le programme avec les infos données dans la commande.

Pour lancer le programme :
  • il faut passer par l'invite de commande,
  • aller dans le dossier où se trouve le programme
    1. cd E:\xxx\xxx\xxx

  • et le lancer avec la commande suivante :
    1. start xxx.exe "l'adresse IP" "le port" "le pseudo"


    Et la je suis bloqué parce que je n'arrive pas à reprendre les données tapées dans la commande DOS.


    Voilà, je vous ai expliqué mon problème.
    Merci d'avance.
    Cordialement, Nir3x [:nir3x]
  • Contenus similaires
    Meilleure solution
    partage
    |
    char commande[100] = "xxx.exe ";

    system("cd E:\\xxx\\xxx\\xxx" );

    strcat(commande, p.ip);
    strcat(commande, " ");
    strcat(commande, p.port);
    strcat(commande, " ");
    strcat(commande, p.pseudo);

    system(commande);
    • Commenter cette solution |
    Score
    0
    òh
    òi
    |
    Meilleure réponse sélectionnée par Nir3x.
    • Commenter cette réponse |
    Score
    0
    òh
    òi
    |
    Ah, j'ai compris :bounce: 

    Merci à vous. Je vais élire la meilleur réponse [:nir3x]

    Nir3x [:nir3x:3]
    [:nir3x:1]
    • Commenter cette réponse |
    Score
    0
    òh
    òi
    |
    Oui, j'ai vu son code. Mais ce que je ne comprend pas, c'est ce que je dois mettre dans les emplacement vides ?

    [:nir3x]
    • Commenter cette réponse |
    Score
    0
    òh
    òi
    |
    Ah ok, je n'avais pas lu tout ton code, alors je n'avais pas bien compris. :) 

    monami62 a déjà répondu, alors je n'ai rien d'autre à ajouter..
    • Commenter cette réponse |
    Score
    0
    òh
    òi
    |
    D'accord, mais les informations sont obligatoirement demandé.

    Mon probléme, ici, est de mettre les informations du scanf dans une commande qui exécute le programme, je n'arrive pas à mettre le pointeur dans la commande ? "Ici p.pseudo"
    • Commenter cette réponse |
    Score
    0
    òh
    òi
    |
    1. if( argc == 4 )
    2. {
    3. // Cas des informations passées en ligne de commande
    4.  
    5. // Tu peux ajouter des tests sur la taille de argv[1]
    6. strcpy( p.pseudo, argv[1] );
    7.  
    8. // Idem pour les autres
    9. }
    10. else
    11. {
    12. // Cas de lancement sans paramètre en ligne de commande
    13.  
    14. // Tu fais tes scanfs
    15. }
    • Commenter cette réponse |
    Score
    0
    òh
    òi
    |
    Je ne comprend pas tout là ^^. Je vais relire [:nir3x]
    • Commenter cette réponse |
    Score
    0
    òh
    òi
    |
    Tu veux avoir les 2 possibilités, soit en ligne de commande soit par un scanf ?
    Si c'est le cas, il te suffit de tester si argc == 4 pour savoir si les informations sont données en paramètre (dans argv[1], argv[2], argv[3] et argv[4]). Et si argc==1, alors tu fais les scanf. Dans les autres cas, soit tu fais une analyse plus poussée des paramètres, soit tu sors en erreur.
    • Commenter cette réponse |
    Score
    0
    òh
    òi
    |
    Je les demande à l'utilisateur.
    Pour lancer le jeu, il faut une adresse ip, où le jeu va se connecter en lan, et un port, pour pouvoir joue en lan.
    Je demande en Scanf les infos et je voudrais lancer le programme avec les info, rentré par l'utilisateur, dans la commande dos.
    La commande pour lancer le jeu est :
    1. "L'emplacement où se trouve le jeu : C:\..." "l'adresse IP où il se connecte : 192.168.xxx.xxx" "Le port de connection : 1234" "Le pseudo : Nir3x"

    Tout ça dans l'invite de commande.

    Mais, si l'utilisateur ne rentre pas c'est information, le jeu ne se lance pas.
    Et si, il rentre pas la même adresse ip ou le même port que les autres, il ne se retrouve pas avec les joueurs qu'il souhaite.

    Donc la où je bloque, c'est pour introduire les informations que j'ai demandé à l'utilisateur, soit :
  • Le pseudo
  • L'adresse IP
  • Le port
    Dans la commande pour lancer le jeu.
    • Commenter cette réponse |
    Score
    0
    òh
    òi
    |
    Il y a un truc que je ne comprend pas. L'IP/port, tu veux les récupérer en ligne de commande ou le demander ?
    Parce que d'un côté tu dis vouloir le récupérer en ligne de commande, et de l'autre tu fais des printf/scanf.
    • Commenter cette réponse |
    Score
    0
    òh
    òi
    |
    Bonjour,

    CRicky a dit :
    Il faut utiliser la fonction point d'entrée main avec la gestion des paramètres:
    1. int main(int argc, char *argv[])
    2. {
    3. }

    argc indique le nombre de paramètres dans le tableau argv (le nom du programme est aussi mis dans la liste en premier).


    Donc cela donnerai :

    1. #include <cstdlib>
    2. #include <iostream>
    3. #include <stdio.h>
    4.  
    5. int main(int argc, char *argv[])
    6. {
    7. typedef struct {
    8. char pseudo [10];
    9. char ip [16];
    10. char port [4];
    11. } personne;
    12. personne p;
    13. system("echo." );
    14. printf("Veuillez entrer le pseudo 'entre 1 et 10 carac' :\n" );
    15. scanf("%s",p.pseudo);
    16. printf("Veuillez entrer l'adresse IP:\n" );
    17. scanf("%s",p.ip);
    18. printf("Veuillez entrer le port:\n" );
    19. scanf("%s",p.port);
    20. system("cls" );
    21. system("echo." );
    22.  
    23. printf("Voici les caracteristiques de cette personne:\n" );
    24. printf("Pseudo=%s\n",p.pseudo);
    25. printf("@Ip=%s\n",p.ip);
    26. printf("Port=%s\n",p.port);
    27. system("cd E:\xxx\xxx\xxx" );
    28. system("start xxx.exe " );
    29. system("PAUSE" );
    30. return 0;
    31. }


    Je vais essai de faire avec :) 

    Merci [:nir3x]
    • Commenter cette réponse |
    Score
    0
    òh
    òi
    |
    Il faut utiliser la fonction point d'entrée main avec la gestion des paramètres:
    1. int main(int argc, char *argv[])
    2. {
    3. }

    argc indique le nombre de paramètres dans le tableau argv (le nom du programme est aussi mis dans la liste en premier).
    • Commenter cette réponse |

    Ce n'est pas ce que vous cherchiez ?

    Tom's guide dans le monde
    • Allemagne
    • Italie
    • Irlande
    • Royaume Uni
    • Etats Unis
    Suivre Tom's Guide
    Inscrivez-vous à la Newsletter
    • ajouter à twitter
    • ajouter à facebook
    • ajouter un flux RSS