Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
2988 connectés 

  FORUM HardWare.fr
  Programmation
  C

  [C] Récupérer un paramètre en ligne de commande

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[C] Récupérer un paramètre en ligne de commande

n°822315
burgergold
5$? va chez l'diable!
Posté le 13-08-2004 à 13:43:15  profilanswer
 

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)

mood
Publicité
Posté le 13-08-2004 à 13:43:15  profilanswer
 

n°823027
blackgodde​ss
vive le troll !
Posté le 14-08-2004 à 04:18:56  profilanswer
 

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])


---------------
-( BlackGoddess )-
n°823030
burgergold
5$? va chez l'diable!
Posté le 14-08-2004 à 07:53:08  profilanswer
 

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

n°823044
cricri_
Posté le 14-08-2004 à 09:38:37  profilanswer
 

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.

n°823134
Taz
bisounours-codeur
Posté le 14-08-2004 à 13:38:51  profilanswer
 

notez bien que argv[argc] == NULL

n°823319
Tamahome
⭐⭐⭐⭐⭐
Posté le 14-08-2004 à 22:22:41  profilanswer
 

BlackGoddess a écrit :

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])


 
jamais vu ca en C...  :heink:  
 
C'est standard ton truc ?
 
je connaissais int main (int argc, char **argv) mais ton truc d'envp...  :??:


---------------
Hobby eien /人◕ ‿‿ ◕人\
n°823337
WhatDe
Posté le 14-08-2004 à 23:13:01  profilanswer
 
n°823340
Taz
bisounours-codeur
Posté le 14-08-2004 à 23:17:58  profilanswer
 

c'est pas standard mais c'est une extension commune

n°823415
cricri_
Posté le 15-08-2004 à 09:42:28  profilanswer
 

Taz a écrit :

notez bien que argv[argc] == NULL


Intéressant, je ne savais pas ;)

n°841245
yartempion
Posté le 03-09-2004 à 16:13:51  profilanswer
 

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

mood
Publicité
Posté le 03-09-2004 à 16:13:51  profilanswer
 

n°841246
yartempion
Posté le 03-09-2004 à 16:15:35  profilanswer
 

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

n°841262
pains-aux-​raisins
Fatal error
Posté le 03-09-2004 à 16:30:46  profilanswer
 

peut être un archaïsme :
 

Code :
  1. main (argc, argv) int argc; char *argv[];
  2. {
  3. ...
  4. }

n°841279
yartempion
Posté le 03-09-2004 à 16:44:22  profilanswer
 

pains-aux-raisins a écrit :

peut être un archaïsme :
 

Code :
  1. main (argc, argv) int argc; char *argv[];
  2. {
  3. ...
  4. }




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.

n°841284
pains-aux-​raisins
Fatal error
Posté le 03-09-2004 à 16:45:53  profilanswer
 

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 !!! :lol:

n°841341
yartempion
Posté le 03-09-2004 à 17:55:01  profilanswer
 

pains-aux-raisins a écrit :

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 !!! :lol:


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?

n°841351
pains-aux-​raisins
Fatal error
Posté le 03-09-2004 à 18:02:20  profilanswer
 

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
;)

n°842913
yartempion
Posté le 05-09-2004 à 21:00:08  profilanswer
 

Salut,
Je ne sais pas coment voir les options du compil et je ne sais pas non plus ce qu'est le #pragma.
A+

n°842915
Taz
bisounours-codeur
Posté le 05-09-2004 à 21:08:58  profilanswer
 

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 ...


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  C

  [C] Récupérer un paramètre en ligne de commande

 

Sujets relatifs
[JAVA] Recupérer le hostname d'un posteJTextPane retour à la ligne avec JLabel
[C ] Récuperer le nom d'une machine d'apres son IP + new pb concat ![CSS] Probleme multi ligne dans une DIV
VBA Excel Recuperer le nom du dossier avec un bouton parcourirNe récuperer qu'un nombre de caractères limité d'un champ varchar
Problème pour récuperer des variables POST - Débutant -recuperer les noms des colonnes d'une table (database)
fopen et parametre variable[Access] Récupérer le nom du controle actif
Plus de sujets relatifs à : [C] Récupérer un paramètre en ligne de commande


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR