Bonjour,

j'ai écrit un main permettant de savoir si le nombre donné en ligne de commande est correct.
Le problème est que si un entier négatif est donné mon programme m'affiche n'importe quoi.
Je voudrais savoir comment modifier mon main pour être sur que l'entier donné en ligne de commande sera positif

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
38
39
40
41
42
43
 
#include <stdio.h>
#include <stdlib.h>
#include <errno.h>
#include <limits.h>
 
int etrange(unsigned long int x){
  return x>9UL ? -1 : '0'+(int)x;
}
 
char *bizarre(unsigned long int x, unsigned int z, unsigned long int d){
  static char y[BUFSIZ];
  int k = etrange(x/d);
  if(k!=-1)
    y[z+1] = '\0';
  else{
    (void)bizarre(x, z+1U, d*10UL);
    k = etrange((x/d)%10UL);
  }
  y[z] = (char)k;
  return y;
}
 
char *mystere(unsigned long int x){
  return bizarre(x, 0U, 1UL);
}
 
int main(int argc, char *argv[]){
  unsigned long ul;
  char *e;
  if(argc!=2){
    fprintf(stderr,"Erreur : nombre de parametres incorrect !\n");
    return EXIT_FAILURE;
  }
  errno = 0;
  ul=strtoul(argv[1],&e,10);
  if((ul == ULONG_MAX && errno == ERANGE) || (*e!='\0')){
    fprintf(stderr,"Erreur de traitement du parametre !\n");
    return EXIT_FAILURE;
  } 
  printf("%s\n", mystere(ul));
  return EXIT_FAILURE;
}