Petit problème sur unmini programme C

Bonjour,
J'ai un tout petit programme et je bloque :Je doit renvoyé un entier et un caractère que l'utilisateur entre en argument

j'ai donc fais ça:
#include <stdio.h>
#include <stdlib.h>

int main(int argc, char *argv[])

{
int x;
int y ;

if(argc<2)
{
printf("Usage correct;<Nom progrramme><entier><charactere>");
return -1;
}
else
{
x=atoi(argv[1]);
y=atoi(argv[2]);

printf("vous avez choisi %d et %c \n",x,y);
return 0;
}
}

Mais mon programme ne m'affiche pas mon caractère et ça je ne comprend absolument pas pourquoi? Pouvez vous 'expliquer??

Merci beaucoup

2 réponses

  1. La totalité de ton programme est présent?

    Je ne vois pas ou tu interroge l'utilisateur pour recevoir les informations et je suppose que ta fonction est 'atoi', dans ce cas si le prototype est 'atoi('entier', 'caractère')' lorsque tu utilise ta fonction tu ne passe qu'un paramètre et donc tu ne récupère qu'un entier...
    1. ok ok je ne connaissais pas, tu passes les deux entrées récupérer à une fonction qui converti tes string en int donc le premier paramètre que tu récupères doit être un entier tu n'a pas de soucis tu le prend, tu le convertis en int et tu l'affiche en %d, par contre le 2eme paramètre que tu rentre est un caractère, tu vas le convertir en int et tu essaye de l'afficher avec %c, je pense que si tu remplace ton %c par %d tu verras ton 2eme résultat afficher mais ça ne résoudras pas ton problème, je pense pas qu'un traitement soit nécessaire sur ta 2eme entrée
  2. Contributeur
    Salut mickmac,

    Si y doit accueillir un char, autant le déclarer comme tel :
        char y ;

    Ensuite, vu que argv est un tableau de pointeurs sur des char, pour affecter un char provenant d'un élément du tableau, tu dois déréférencer le pointeur :
            y=*argv[2];

    Cela devrait suffire.

    Mais le contrôle d'erreur est minimal.

    Par exemple, tu pourrais vérifier si le atoi pour x ne renvoie pas 0, ce qui indiquerait une erreur de conversion.

    Enfin, utiliser strtol est sans doutes mieux : http://www.cplusplus.com/reference/cstdlib/strtol/

    Dal
    1. Merci beaucoup je vais essayé ça dès que je pourrais. Il e semblais bien que c'était un problème de pointeur
      Le x donne bien la valeur qu'il faut .