Specifier arguments en ligne de commande [C] - Programmation
Marsh Posté le 10-12-2001 à 01:41:22
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.
Marsh Posté le 10-12-2001 à 02:21:25
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
Marsh Posté le 10-12-2001 à 00:30:48
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.
@+.