summaryrefslogtreecommitdiff
path: root/numbers.c
diff options
context:
space:
mode:
Diffstat (limited to 'numbers.c')
-rw-r--r--numbers.c100
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;
-}