diff options
Diffstat (limited to 'numbers.c')
-rw-r--r-- | numbers.c | 100 |
1 files changed, 0 insertions, 100 deletions
diff --git a/numbers.c b/numbers.c deleted file mode 100644 index 831639b..0000000 --- a/numbers.c +++ /dev/null @@ -1,100 +0,0 @@ -/* - * - * Conversion de chaines en nombres ( entier ou flottant ) - * - */ - - -#include "numbers.h" - - -/* Cette fonction lit un nombre. Elle va chercher absolument à traduire la chaîne passée en argument en un nombre. Si -ce nombre n'est pas valide, alors l'int valid est mis à faux. Cette fonction reconnais les nombres en décimaux, les nombres -en octal préfixés avec 0 et les nombres en hexadécimal préfixés avec 0x. -*/ - -int char_to_number(char *st, int *valid) -{ - int whattype = 0, result = 0; - - *valid = 0; - - if (*st == '0') { - st++; - if (*st == 'x') { - whattype = 1; - st++; - } else if (*st) { - whattype = 2; - } else { - *valid = 1; - return 0; - } - } - - while (*st) { - switch (whattype) { - case 0: - if ((*st < '0') || (*st > '9')) { - return 0; - } - result *= 10; - result += *st - '0'; - break; - case 1: - if (((*st < '0') || (*st > '9')) - && ((*st < 'A') || (*st > 'F')) - && ((*st < 'a') || (*st > 'f'))) { - return 0; - } - result *= 16; - if ((*st >= '0') && (*st <= '9')) { - result += *st - '0'; - } else if ((*st >= 'A') && (*st <= 'F')) { - result += *st - 'A' + 10; - } else { - result += *st - 'a' + 10; - } - break; - case 2: - if ((*st < '0') || (*st > '7')) { - return 0; - } - result *= 8; - result += *st - '0'; - break; - } - st++; - } - - *valid = 1; - return result; -} - - -/* TODO: Rajouter la precision dans les valeurs retournees */ -double char_to_double(char *st, int *valid) /* cette fonction tente de traduire une chaine en flottant */ -{ - unsigned int dotnum = 0; - unsigned int deci = 1; - double result = 0; - - while (*st) { - if (*st == '.') { - dotnum++; - } else { - if ((*st < '0') || (*st > '9') || (dotnum > 1)) { - *valid = 0; - return 0; - } else { - result *= 10; - result += *st - '0'; - if (dotnum == 1) - deci *= 10; - } - } - } - result = result / deci; - *valid = 1; - return result; -} |