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;
} |
Partager