Récupérer un paramètre en ligne de commande [C] - C - Programmation
Marsh Posté le 14-08-2004 à 04:18:56
pour les paramètres de la ligne de commande :
int main(int ac, char **av, char **envp)
=> ac est le nombre de paramètres, av un "tableau" de ces paramètres (av[0] => av[ac-1])
Marsh Posté le 14-08-2004 à 07:53:08
et envp dans tout ca?
et comment je fais pour valider que ce que l'usager a entrer en paramètre est bien valide?
merci, jai fini le boulot aujourd'hui sans vraiment compléter le truc, je commence l'université lundi, alors ca risque de pas être avant jeudi prochain que jvais pouvoir continuer le truc, jvais regarder si je pourrais faire un truc du même genre ici sur ma box linux
Marsh Posté le 14-08-2004 à 09:38:37
c'est à toi de "parser" les arguments de la ligne de commandes, par example : "prog -s toto.txt -f -i ..."
dans argc tu récupère le nombre de paramètres séparés par des espaces, et dans argv des pointeurs sur char pour chaque argument, sachant que argv[0] pointe sur le nom du programme.
Il existe une fonction getopt() bien pratique pour ça, non standard, mais très utilisée.
Marsh Posté le 14-08-2004 à 22:22:41
BlackGoddess a écrit : pour les paramètres de la ligne de commande : |
jamais vu ca en C...
C'est standard ton truc ?
je connaissais int main (int argc, char **argv) mais ton truc d'envp...
Marsh Posté le 15-08-2004 à 09:42:28
ReplyMarsh Posté le 03-09-2004 à 16:13:51
J'ai un probleme sensiblement identique mais sur une station UNIX hp
mon code:
#include <stdio.h>
int argc;
char *argv[];
main(argc,argv)
{
int numarg;
printf("\nargument %s",argv[numarg]);
}
A la compil j'ai le message:
subscript must combine pointer and integer
j'ai aussi essaye avec la declaraion du type des arguments dans les parantheses du main mais j'ai un message qui me signal que la syntaxe n est pas en ansi.
Quelqu'un aurait il une solution.
Merci
Marsh Posté le 03-09-2004 à 16:15:35
J'ai un probleme sensiblement identique mais sur une station UNIX hp
mon code:
#include <stdio.h>
int argc;
char *argv[];
main(argc,argv)
{
int numarg=1;
printf("\nargument %s",argv[numarg]);
}
A la compil j'ai le message:
subscript must combine pointer and integer
j'ai aussi essaye avec la declaraion du type des arguments dans les parantheses du main mais j'ai un message qui me signal que la syntaxe n est pas en ansi.
Quelqu'un aurait il une solution.
Merci
Marsh Posté le 03-09-2004 à 16:30:46
peut être un archaïsme :
Code :
|
Marsh Posté le 03-09-2004 à 16:44:22
pains-aux-raisins a écrit : peut être un archaïsme :
|
Merci ça marche!!!!!!
Comment tu as fait pour trouver la solution et pourquoi sur hp UNIX il y a pleins de petites differences avec linux sur la syntaxe.
Marsh Posté le 03-09-2004 à 16:45:53
c'est juste que je me suis dis unix/hp => vieux compilo => du langage C à la Kernighan & Rithcie...
Ca me fait marrer que ca existe encore ce genre de bidules !!!
Marsh Posté le 03-09-2004 à 17:55:01
pains-aux-raisins a écrit : c'est juste que je me suis dis unix/hp => vieux compilo => du langage C à la Kernighan & Rithcie... |
Je travaille pour une tres grande entreprise et bien tous les postes sont avec ce compil ou pourrai je avoir de la doc assez complete sur ce typpe de compil?
Marsh Posté le 03-09-2004 à 18:02:20
yartempion a écrit : Je travaille pour une tres grande entreprise et bien tous les postes sont avec ce compil ou pourrai je avoir de la doc assez complete sur ce typpe de compil? |
Ca me surprend quand même...
Tu peux jetter un oeil là : http://www.lysator.liu.se/c/bwk-tutor.html
Mais essaie de voir s'il ton problème vient pas d'une option de ton compilateur ou d'un #pragma
Marsh Posté le 05-09-2004 à 21:00:08
Salut,
Je ne sais pas coment voir les options du compil et je ne sais pas non plus ce qu'est le #pragma.
A+
Marsh Posté le 05-09-2004 à 21:08:58
les pragma sont directives à 99% spécifique à ton compilateur
#pragma machin_chose
donc si tu veux jour avec, regarde la documentation de ton compilateur.
cela dit comme je comprends pas trop ton problème si ce n'est que tu codes sur un truc hors d'age ...
Marsh Posté le 13-08-2004 à 13:43:15
Je dois dire que j'ai rien codé en C depuis environ 3 ans et qu'à se moment c'était quand même des trucs archi simple
Bon, je dois faire un petit binaire qui recevra en paramètre au command prompt un pid, et jvais ensuite calculer le %cpu live de ce process (le ps sous aix semble déconner un peu à ce sujet)
donc j'ai beau chercher dans ma mémoire, jme rappel plus trop comment récupérer le paramètre et de tester si celui ci est de type "pid_t" (selon le header sys/procinfo.h)