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

 


Dernière réponse
Sujet : [C] Specifier arguments en ligne de commande
snotling Ouah c'est impeccable ca ! Merci !
 
PS : je sais ca fait pas tres pro la technique employee... si vous avez mieux et assez facile, je suis preneur :)

Votre réponse
Nom d'utilisateur    Pour poster, vous devez être inscrit sur ce forum .... si ce n'est pas le cas, cliquez ici !
Le ton de votre message                        
                       
Votre réponse


[b][i][u][strike][spoiler][fixed][cpp][url][email][img][*]   
 
   [quote]
 

Options

 
Vous avez perdu votre mot de passe ?


Vue Rapide de la discussion
snotling Ouah c'est impeccable ca ! Merci !
 
PS : je sais ca fait pas tres pro la technique employee... si vous avez mieux et assez facile, je suis preneur :)
krolours1 C normal :)
En c pour comparer des chaines c'est strcmp()
 
Si tu fait if (optarg=="in" ), tu compare 2 pointeurs, il n'y a pas de type chaine en c.
snotling Salut tout le monde,
Voila j'ai un petit probleme sur un de mes programmes en C.
Je voudrais pouvoir specfifier une option en ligne de commande soit '-min' ou bien '-max'. J'arrive deja a le faire avec une seule lettre style '-d' ou bien '-r' mais avec plusieurs je pense qu'il faut bidouiller (pour pas devoir utiliser des getopt_long() ).
Donc j'avais penser a faire ceci :
 

#include <stdio.h>  // for printf() & fprintf()
#include <unistd.h> // for getopt()
#include <stdlib.h>
 
 
/* Default values */
double min_value, max_value, temp_value, input;
 
void usage()
{
 fprintf(stderr, "Syntax: generator [-min] or [-max]\n" );
 fprintf(stderr, "Default option is : -max\n" );
 exit(1);
}
 
void find_max()
{
scanf("%lg", &input);
max_value=input;
while(scanf("%lg", &input)!=EOF)
 {
 temp_value=input;
 if (temp_value>max_value) { max_value=temp_value; }
 }
printf("The maximum value is : %.17lg\n", max_value);
exit(0);
}
 
void find_min()
{
scanf("%lg", &input);
min_value=input;
while(scanf("%lg", &input)!=EOF)
 {
 temp_value=input;
 if (temp_value<min_value) { min_value=temp_value; }
 }
printf("The minimum value is : %.17lg\n", min_value);
exit(0);
}
 
void command_line_params(int argc, char **argv)
 
{
 char param;
 while ((param=getopt(argc, argv, "?hm:" ))!=EOF)
 {
  switch(param)
  {
   case 'min': if (optarg=="in" ) { find_min(); }
        else { find_max(); }
        break;
   case 'h':
   case '?': usage();
       break;
  }
 }
}
 
int main(int argc, char **argv)
{
 
 
command_line_params(argc, argv);
 
find_max();
 
}

 
Mais apparemment ca veux pas marcher et pourtant que je fais un 'printf("%s", optarg)' il me retourne bien 'in' ou 'ax' suivant ce que je rentre.
Donc pourquoi le 'if' marche pas ?
 
Merci.
@+.

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