Petit problème sur unmini programme C
mickmac
Messages postés
447
Statut
Membre
-
mickmac Messages postés 447 Statut Membre -
mickmac Messages postés 447 Statut Membre -
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
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
A voir également:
- Petit problème sur unmini programme C
- Programme demarrage windows - Guide
- Petit point vert snap ✓ - Forum Snapchat
- Petit 2 ✓ - Forum Windows
- Programme word gratuit - Guide
- Programme bonjour ✓ - Forum Windows
2 réponses
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...
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...
Salut mickmac,
Si y doit accueillir un char, autant le déclarer comme tel :
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 :
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
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
http://www.cplusplus.com/reference/cstdlib/atoi/
l'utilisateur est sensé entrer les paramètres à la ligne de commande.
Dal