Recuperer un parametre de la ligne de commande

Résolu
cs_Loonis Messages postés 23 Date d'inscription jeudi 14 septembre 2006 Statut Membre Dernière intervention 30 mars 2007 - 11 févr. 2007 à 22:42
SAKingdom Messages postés 3212 Date d'inscription lundi 7 novembre 2005 Statut Membre Dernière intervention 16 février 2009 - 12 févr. 2007 à 01:51
Bonjour à tous,

Supposons une application a.out avec 2 parametres, le 1er étant une chaine de caractère le 2eme un entier.

int main(int argc, char* argv[])
{
int a;
char b[10];
...

Executons cette application :
a.out hello 2

Pour récupérer le 2 un simple

a = atoi(argv[2]);

Toutefois comment procède t'on pour récupérer le "hello" dans un tableau de caractères (b), sans utliser de string ?

Merci de vos réponses.

12 réponses

SAKingdom Messages postés 3212 Date d'inscription lundi 7 novembre 2005 Statut Membre Dernière intervention 16 février 2009 15
11 févr. 2007 à 23:04
char tab[10];

strcpy(tab, argv[1]);

C++ (@++)<!--
3
BruNews Messages postés 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019
11 févr. 2007 à 23:07
ATTENTION, on est juste dans le cas où strncpy() est requis car param vient de l'extérieur et donc inconnu en longueur.

ciao...
BruNews, MVP VC++
0
SAKingdom Messages postés 3212 Date d'inscription lundi 7 novembre 2005 Statut Membre Dernière intervention 16 février 2009 15
11 févr. 2007 à 23:11
Ou encore, pour éviter un appel à strcpy:

char tab[10];
int i = 0;

while(tab[i] = argv[1][i++]);

C++ (@++)<!--
0
BruNews Messages postés 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019
11 févr. 2007 à 23:12
strcpy() ne provoque aucun appel sur un compilo correct, c'est inliné à tout coup.

ciao...
BruNews, MVP VC++
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
SAKingdom Messages postés 3212 Date d'inscription lundi 7 novembre 2005 Statut Membre Dernière intervention 16 février 2009 15
11 févr. 2007 à 23:15
Oups, posté trop tard.

Oui c'est vrai mais on suppose qu'il a prit des mesures pour empecher ça. Sinon:

char tab[10];
int i = 0;

while( i < 9 && (tab[i] = argv[1][i++]));

C++ (@++)<!--
0
SAKingdom Messages postés 3212 Date d'inscription lundi 7 novembre 2005 Statut Membre Dernière intervention 16 février 2009 15
11 févr. 2007 à 23:16
Décidément, je suis toujours 1 post en retard.

Pour strcpy, ça je savais pas. Bon à savoir.

C++ (@++)<!--
0
BruNews Messages postés 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019
11 févr. 2007 à 23:21
Faut prendre l'habitude de regarder le listing asm du compilo, on sait ainsi ce qu'il convient de faire ou non.

ciao...
BruNews, MVP VC++
0
cs_Loonis Messages postés 23 Date d'inscription jeudi 14 septembre 2006 Statut Membre Dernière intervention 30 mars 2007
11 févr. 2007 à 23:30
Merci pour vos réponses, j'avais omis le strcpy...
0
BruNews Messages postés 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019
11 févr. 2007 à 23:33
tu cours à la cata avec strcpy() mais bon, si c'est ton choix.

ciao...
BruNews, MVP VC++
0
SAKingdom Messages postés 3212 Date d'inscription lundi 7 novembre 2005 Statut Membre Dernière intervention 16 février 2009 15
12 févr. 2007 à 00:23
Il est parti trop tot.
Pour récupérer ma gaffe:

char tab[10] = {0};

strncpy(tab, argv[1], 9);

"Faut prendre l'habitude de regarder le listing asm du compilo, on sait ainsi ce qu'il convient de faire ou non."

C'est ce que je fais régulièrement mais, c'est un peu compliqué sous Linux. J'ai énormément de difficulté à configurer mon IDE et même si j'arrive à faire un listing asm, je dois me taper la syntaxe AT&T. Pas facile facile...

C++ (@++)<!--
0
BruNews Messages postés 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019
12 févr. 2007 à 01:17
ah non mais, ton diplome "Grand Bidouilloux Trifouilloux" faut le mériter, he he.

ciao...
BruNews, MVP VC++
0
SAKingdom Messages postés 3212 Date d'inscription lundi 7 novembre 2005 Statut Membre Dernière intervention 16 février 2009 15
12 févr. 2007 à 01:51
Héhéhé. Faut plisser les yeux un peu mais on fini par comprendre. T'en fais pas, mon diplôme "Grand Bidouilloux Trifouilloux", j'vais l'avoir bien mérité.

C++ (@++)<!--
0
Rejoignez-nous