Bonjour,

Je viens demander de l'aide car je ne trouve pas de solution seul à mon "problème". J'ai écrit un programme qui fonctionne du coup je peaufine les détails. Mon programme vise à effectuer un certain nombre d'opérations de flou sur une image. Quand je lance le programme sur cygwin, je demande en 3ème argument le nombre d'itérations à effectuer (cas que je ne peux changer, le programme est demandé ainsi).

Du coup voici mes variables déclarés et ce que j'ai fait pour le moment :

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
 // Définition des différentes variables + images
  image im_ori, im_res;
  int x,y,h,l,a,i;
 
...
 
 // Vérification du nombre d'itérations à effectuer
      const char *s = (argv[3]);
      test_entier(s);
 
      sscanf(argv[3], "%d", &a);
 
    if (a < 0) {
      printf("Le nombre d'itérations saisi est négatif !\n");
      usage(argv[0]);
    } else if (a == 0) {
      printf("Aucune opération de flou effectuée.\n");
      usage(argv[0]);
    }
 
    if (a == (int)(a)) {
    } else {
    usage(argv[0]);
    }"
 
La fonction test_entier :
 
if(sscanf(s,"%d",&x) == 1){
    }
    else{
      printf("%s n'est pas un chiffre !\n",s);
      exit(1);
    }
C'est à la fin qu'il y a un problème. J'ai bien réussi à bloquer le programme si le nombre est négatif, s'il commence par une lettre (d, d85 par exemple) mais je ne sais pas faire :
- stopper le programme si on tape 10.5
- stopper le programme si on tape 58ef

Des idées ?

Merci d'avance ! (je suis débutant en C)