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

  FORUM HardWare.fr
  Programmation
  C++

  [C] fonction GETOPT

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[C] fonction GETOPT

n°136424
xc0r
Posté le 08-05-2002 à 16:55:03  profilanswer
 

Bonsoir :)
 
j ai une question tt simple et tt bete et pourtant ca me fait bien c*** de pas trouver :(
 
voila :
 
j ai mon programme :
$> ./a.out -n name1 name2 name3 -x -y
 
le pb ici est que je veux a partir de l option -n, empiler name1, name2 et name3 (qui vont avec l option -n) eventullement en me servant de getopt (puisque je m en sers egalement pour une floppee d autres options ...)
 
seulement voila, je n arrive pas a avoir plus de 1 optarg avec getopt ...
 
si qqn peut me dire comment faire ca m aiderait bcp :)
 
while ((i = getopt(ac, av, "x:y:n:" )) != -1)
{
  switch (i)
   {
     case 'x': e->width = atoi(optarg); break;
     case 'y': e->heigth = atoi(optarg); break;
     case 'n': ????????????????????????; breal;
 
   }
 
}
 
typedef struct s_env
{
  t_crew *crew;
  int x;
  int y;
} t_env;
 
typedef struct s_crew
{
  char *name;
  t_crew *next;
} t_crew;
 
 
merci bcp ca fait plusieurs heures que je cherche en vain ... (voui je sais je suis pas une brute ... mais j apprend ! :) )
 
Xc0r

mood
Publicité
Posté le 08-05-2002 à 16:55:03  profilanswer
 

n°136463
xc0r
Posté le 08-05-2002 à 19:18:49  profilanswer
 

:bounce:  :bounce:  :bounce:  
 
 Y a personne qui sait ? :)
 
heu je sais mm pas si c est possible :(
 :eek2:

n°136472
koulip31
Posté le 08-05-2002 à 19:45:39  profilanswer
 

xc0r a écrit a écrit :

:bounce:  :bounce:  :bounce:  
 
 Y a personne qui sait ? :)
 
heu je sais mm pas si c est possible :(
 :eek2:  




 
int main(int ac, char**av)
{
  int i = 0;
  for(; i < ac; i++)
   if(!strncmp(av[i], "-d" ))
     for( ;i < ac; i ++)
       toto = av[i];  
}


---------------
télétunestel ouimélétuness sitélétunes mélétunetron [:koulip31] [:suri]
n°136514
Suri
Darksurious
Posté le 08-05-2002 à 21:29:07  profilanswer
 

on a le droit a getopt pour le zappy?
demasked :D


---------------
Suri.morkitu.org : Balades au coeur de la ville...
n°136515
Suri
Darksurious
Posté le 08-05-2002 à 21:29:37  profilanswer
 

up ca m'interesse aussi :D


---------------
Suri.morkitu.org : Balades au coeur de la ville...
n°136551
xc0r
Posté le 09-05-2002 à 00:27:03  profilanswer
 

apparement pas possible de mettre plusieurs arguments a getopt ... :(
 
enfin c est les conclusions que je tire de qq recherches que j ai pu effectuer ...
 
@+
 
Xc0r

n°136761
xc0r
Posté le 09-05-2002 à 17:52:31  profilanswer
 

merci koulip :)
 
   for (j = 0; j < ac ; j++)
    if (!strcmp(av[j], "-n" ))
      for ( ; j < ac  && (av[j+1]? *av[j + 1] != '-': NULL); j++)
      {
        if (strcmp(av[j], "-n" ))
            printf("argument a empiler : %s\n", av[j]);
 
            }
 
 
 
sauf que pour l instant il ne veut pas me garder le dernier arugment qui
part je sais pas ou ! :) :)  .... :-(
 
[xc0r@portable test]$ ./a.out -n toto tata titi tutu
argument a empiler : toto
argument a empiler : tata
argument a empiler : titi
[xc0r@portable test]$
 
grrr, il me manque tutu il est parti ou tutu ? :) :)
 
Xc0r

n°136810
xc0r
Posté le 09-05-2002 à 20:22:39  profilanswer
 

:bounce:  :??:  :??:  :??:  :bounce:  
 :fou:  :fou:  :fou:  :fou:  :fou:  :fou:  :fou:

n°136894
grungy
Posté le 09-05-2002 à 23:35:27  profilanswer
 

euhh
 
t as essayer avec un inferrieur ou egale pour ta boucle
for ??

n°137339
xc0r
Posté le 10-05-2002 à 21:07:13  profilanswer
 

grungy a écrit a écrit :

euhh
 
t as essayer avec un inferrieur ou egale pour ta boucle
for ??  




 
heu pour le j < ac ?
 
heu non ca c est la condition pour passer d un argument a l autre ...
ce que je veux c est une condition pour rajouter le dernier argument avec le prochain -x
 
exemple :
$> ./a.out -n toto tata titi -x coin -y pouet
                   ^^^^^^^^
 
c est ses 3 arguments que je veux empiler :)
 
Xc0r

 

[jfdsdjhfuetppo]--Message édité par xc0r le 10-05-2002 à 21:18:49--[/jfdsdjhfuetppo]

mood
Publicité
Posté le 10-05-2002 à 21:07:13  profilanswer
 

n°137380
grungy
Posté le 10-05-2002 à 23:24:54  profilanswer
 

yo en fait apres reflexion, je pense que ton probleme vien peut etre du fait que tu ne testes pas la condition de sortie de ton deuxieme for, car si j = ac, tu sors du for, mais *av[j] peux etre different de '-' et donc tu l'empile pas. tu devrais essayer ton code avec un - a la fin, ca te permetrais de voir si ca vien de la.
 
 
j aurais fait un truc du genre :
for (j=0;j<ac;j++) {
   if (!strcomp(av[j],"-n" ) {
        for (t=j;t<ac && *av[t+1]!='-';t++)  
              /*  empile arg; */
        if (t => ac) && (*av[t-1]!='-';)  
              /*  empile arg; */
        j=t;
 
   }
   /* suite */
}
 
je suis pas sur que ca marche, enfin bonne chance ...
apluches

n°137384
xc0r
Posté le 10-05-2002 à 23:47:53  profilanswer
 

oui je te remercie :)
c est a peu pres ce que je voulais et en melangeant les deux j ai trouve ce que je voulais :))))
 
merci encore :)
 
sinon, tu sais pq cette ligne elle fait un warning :
 
for (t = j ; t < ac  && (av[t+1]? *av[t+1] != '-': NULL); t++)
 
Warning : pointer/integer type mismatch in conditional expression
 
elle fait pourtant bien ce que je veux cette ligne ! :)
 
Merci encore :)
 
Xc0r

n°137387
grungy
Posté le 11-05-2002 à 00:21:27  profilanswer
 

xc0r a écrit a écrit :

oui je te remercie :)
c est a peu pres ce que je voulais et en melangeant les deux j ai trouve ce que je voulais :))))
 
merci encore :)
 
sinon, tu sais pq cette ligne elle fait un warning :
 
for (t = j ; t < ac  && (av[t+1]? *av[t+1] != '-': NULL); t++)
 
Warning : pointer/integer type mismatch in conditional expression
 
elle fait pourtant bien ce que je veux cette ligne ! :)
 
Merci encore :)
 
Xc0r  




 
 
le seul truc qui me chagrine dans cette ligne, c est que tu peux avoir comme test, t<ac && NULL.
 
si ton test (av[t+1]? *av[t+1] != '-': NULL) consite a fair en gros:
 
si av[t+1] est valide alors
   je renvoi le resultat de *av[t+1]
sinon je revois NULL
 
alors je je mettrais un 0 a la place de NULL, et je remplacerais ton av[t+1] par av[t+1]!=NULL...
 
parcque tu peux avoir t<ac && NULL ce qui peux faire hurler le compilo, car ni t ni ac ne sont des pointeurs...
vala

n°137389
xc0r
Posté le 11-05-2002 à 00:31:18  profilanswer
 

je suis une sous merde :)
 
fallait bien mettre 0 a la place de NULL c est tt ...
j ai voulu ecrie un code clair et je me suis plante :)
 
la c est rentre ds l ordre tt fonctionne et j ai pu mettre le getopt apres et tt et tt et ds n importe quel sens !
 
encore merci :)


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

  [C] fonction GETOPT

 

Sujets relatifs
[JS]comprend pas certaine fonction, code inside[C/C++] Comment fonctionne la fonction "free" ?
[IA] Fonction d'évaluation pour le jeu 'Awale'[PHP-SQL] Problème avec la fonction "time"
Une ch'tite fonction en Delphi SVP ![VBScript]appel d'une fonction depuis un formulaie.
Recherche une fonction en VBSCRIPT (j'ai la source en VB)...[PHP] Afficher differente chose en fonction ...
[php] probleme avec la fonction stripslashes()[PHP] ca existe une fonction ki affiche un calendrier ??
Plus de sujets relatifs à : [C] fonction GETOPT


Copyright © 1997-2025 Groupe LDLC (Signaler un contenu illicite / Données personnelles)