bonsoir tout le monde,
voila ma petite fonction ne fait pas tres bien le travail
elle n'affiche pas le message " option non reconnu " ou " attend un argument " quand j'oublie de rentrer un argument.
Par exemple: ./test -s10 -d -a12 -c15 lancera le programme.

Nb: si j'oublie l'argument pour c, il m'affichera "-c attend un argument"

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
 
int c;
char * s_arg=NULL, *d_arg=NULL, *a_arg=NULL, *c_arg=NULL; 
int s_ar, d_ar, a_ar, c_ar;
while ((c=getopt(argc, argv,":s:d:a:c:"))!=-1)
 {
  switch(c)
    {
     case 's':
        s_arg=optarg; s_ar=atoi(s_arg);
        break;
 
     case 'd': 
        d_arg=optarg; d_ar=atoi(d_arg);
        break;
 
     case 'a': 
        a_arg=optarg; a_ar=atoi(a_arg);
        break;
 
     case 'c': 
        c_arg=optarg; c_ar=atoi(c_arg);
        break;
 
     case '?':
        fprintf(stderr,"Option -%c non reconnu\n",optopt);
        fprintf(stderr,usage,basename (argv[0])); /* argv[0] contient le nom du prog*/
        exit (EXIT_FAILURE);
 
     case ':': 
        fprintf(stderr,"Option -%c attend un argument\n",optopt);
        fprintf(stderr,usage,basename (argv[0]));
        exit (EXIT_FAILURE);
 
     default: assert(0);
    } 
 }
Merci d'avance

[edit] Merci pour le point virgule, mais c'etait une erreur de recopie