Sve@r | treolar a écrit :
Bonjour,
Le prototype de la fonction main est comme suit :
int main(int argc, char* argv[])
Dans argv[1], on récupère le premier paramètre passé au programme en ligne de commande.
C'est une chaine de caractères qui aura toujours la forme : totoxx_yyy.dat (ex: toto12_250.dat)
Je voudrais récupérer dans deux entiers n et m, les valeurs de xx et yyy.
Merci pour votre aide.
Je suis débutant en prog, une simple piste pourrait déjà m'aider grandement...
Je suppose qu'il doit exister des fontions pour se déplacer dans la chaine de caractères et récupérer les caractères, puis les convertir en entier ?
|
La fonction "strstr()" permet d'extraire des sous-chaînes de chaînes. Mais c'est une fonction lourde.
Si tu es certain certain que
1) la chaîne commence par "toto" (4 caractères)
2) xx fait bien et fera toujours 2 caractères
3) yyy en fera toujours 3 et se trouve en 8° position
Alors tu peux utiliser directement "strtoul()" qui converti une chaîne en nombre
Code :
- #include <stdlib.h> // C'est nécessaire à la déclaration de "strtoul"
- main(int argc, char *argv[])
- {
- // Déclarations des variables "n" et "m"
- unsigned short n, m;
- // Convertir les chaînes en nombre - Bien démarrer à la bonne position
- n=strtoul(argv[1] + 3, NULL, 10);
- m=strtoul(argv[1] + 7, NULL, 10);
- }
|
Evidemment, c'est pas franchement joli joli. Si jamais ta chaîne entrante change de format, tu dois reprogrammer pas mal de choses => c'est pas un code "propre" mais qui fonctionne dans ce cas précis.
Si maintenant tu veux un code plus adaptable aux données entrantes, alors cela devient un peu plus compliqué |