Probleme d argument
Fermé
adriano
-
Modifié par fiddy le 29/10/2013 à 20:25
fiddy Messages postés 11069 Date d'inscription samedi 5 mai 2007 Statut Contributeur Dernière intervention 23 avril 2022 - 30 oct. 2013 à 18:54
fiddy Messages postés 11069 Date d'inscription samedi 5 mai 2007 Statut Contributeur Dernière intervention 23 avril 2022 - 30 oct. 2013 à 18:54
3 réponses
fiddy
Messages postés
11069
Date d'inscription
samedi 5 mai 2007
Statut
Contributeur
Dernière intervention
23 avril 2022
1 836
29 oct. 2013 à 20:59
29 oct. 2013 à 20:59
Bonjour,
je ne comprend pas parce que "0-2" et considerer comme un caractere dans le tableau non?
Non, c'est une chaîne de caractère. argv est de type char argv*[].
Donc : argv[3] donne "0-2"
Si tu veux récupérer le 0 : argv[3][0] => '0' et argv[3][2] => '2'
Si ces nombres sont plus grands que 9 (exemple : 50-3), il faudra utiliser sscanf/sprintf.
Cdlt,
je ne comprend pas parce que "0-2" et considerer comme un caractere dans le tableau non?
Non, c'est une chaîne de caractère. argv est de type char argv*[].
Donc : argv[3] donne "0-2"
Si tu veux récupérer le 0 : argv[3][0] => '0' et argv[3][2] => '2'
Si ces nombres sont plus grands que 9 (exemple : 50-3), il faudra utiliser sscanf/sprintf.
Cdlt,
merci fiddy
mais j ai une question, on fait mon programme fonctionne parfait mais rendu a la recuperation de la ligne de commande, j ai de la misère
pourquoi je ne peux pas faire cela, quand je suis dans argv[3]
[code]
int nombre = 0;
char * mot;
mot = argv[3][0];
nombre = atoi(argv[3][0]);
printf("mot %s:\n",mot);
printf("nombre%s:\n",nombre);
[/code]
mais j ai une question, on fait mon programme fonctionne parfait mais rendu a la recuperation de la ligne de commande, j ai de la misère
pourquoi je ne peux pas faire cela, quand je suis dans argv[3]
[code]
int nombre = 0;
char * mot;
mot = argv[3][0];
nombre = atoi(argv[3][0]);
printf("mot %s:\n",mot);
printf("nombre%s:\n",nombre);
[/code]
salut fiddy
c est bon je viens de voir l erreur
un pointeur pointe sur un tableau, donc
[code]
mot = &argv[3][0];
[/code]
merci encore
c est bon je viens de voir l erreur
un pointeur pointe sur un tableau, donc
[code]
mot = &argv[3][0];
[/code]
merci encore
fiddy
Messages postés
11069
Date d'inscription
samedi 5 mai 2007
Statut
Contributeur
Dernière intervention
23 avril 2022
1 836
30 oct. 2013 à 17:12
30 oct. 2013 à 17:12
Attention à l'usage des pointeurs.
Ici, j'imagine que tu souhaites récupérer la valeur du char.
Donc char mot=argv[3][0];
Pour convertir ce chiffre en entier : int nombre=mot - '0';
Maintenant, (tu n'as pas répondu à ma question précédente...), si argv[3] représente 2 nombres séparés par un tiret. Tu auras des problèmes pour récupérer le deuxième nombre. Mais, tu peux utiliser dans ce cas sscanf...
Sinon mot=&argv[3][0]; c'est pareil que mot=argv[3]; Cela ne te permet pas de récupérer l'autre nombre.
Ici, j'imagine que tu souhaites récupérer la valeur du char.
Donc char mot=argv[3][0];
Pour convertir ce chiffre en entier : int nombre=mot - '0';
Maintenant, (tu n'as pas répondu à ma question précédente...), si argv[3] représente 2 nombres séparés par un tiret. Tu auras des problèmes pour récupérer le deuxième nombre. Mais, tu peux utiliser dans ce cas sscanf...
Sinon mot=&argv[3][0]; c'est pareil que mot=argv[3]; Cela ne te permet pas de récupérer l'autre nombre.
fiddy
Messages postés
11069
Date d'inscription
samedi 5 mai 2007
Statut
Contributeur
Dernière intervention
23 avril 2022
1 836
30 oct. 2013 à 18:54
30 oct. 2013 à 18:54
Beh c'est surtout dans le cas : argv[3]="56-145", la méthode ne marchera pas.
Dans ce cas, tu peux utiliser :
int nb1;
int nb2;
sscanf("%d-%d",argv[3],&nb1,&nb2);
Dans ce cas, tu peux utiliser :
int nb1;
int nb2;
sscanf("%d-%d",argv[3],&nb1,&nb2);