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

  FORUM HardWare.fr
  Programmation

  [C] Specifier arguments en ligne de commande

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[C] Specifier arguments en ligne de commande

n°79942
snotling
Posté le 10-12-2001 à 00:30:48  profilanswer
 

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

mood
Publicité
Posté le 10-12-2001 à 00:30:48  profilanswer
 

n°79946
krolours1
Posté le 10-12-2001 à 01:41:22  profilanswer
 

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.

n°79952
snotling
Posté le 10-12-2001 à 02:21:25  profilanswer
 

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


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

  [C] Specifier arguments en ligne de commande

 

Sujets relatifs
[VBA & Excel] Séparateur dans une barre de commande perso...en batch virer un caractere ds une ligne
[HTML ou CSS] Comment specifier l'espace entre 2 lignes ?[VB] creer une commande VB a partir de VB ??? ---> youpi !
VB6 Retour à la ligne dans une dbgrid[BATCH] Récupérer le code de retour de la dernière commande
[DJGPP] Quelle commande pour lier des fichiers objets avec LD?[HTML] [FORM] [INPUT] Spécifier le type d'un input
[PHP] [mySQL] suppression d'une ligne ds la base de donné[PhP] Besoin d'aide pour la gestion d'un site de vente en ligne !
Plus de sujets relatifs à : [C] Specifier arguments en ligne de commande


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