| strings/number-in-base-10.c - Hele programmet. | Lektion 10 - slide 30 : 51 Program 2 |
#include <stdio.h>
#include <stdlib.h>
int read_in_base(int);
int main(void) {
int i, n, base;
char *the_number[20];
for (i = 1; i <= 5; i++){
printf("Enter number base (a decimal number)"
"and a number in that base: ");
scanf("%d %s", &base, the_number);
printf("The decimal number is: %d\n",
to_decimal_number(the_number, base));
}
return 0;
}
/* Convert the string n to a decimal number in base and return it.
Assume that input string is without errors */
int to_decimal_number(char *n, int base){
int ciffer_number, res = 0;
char *ciffer_ptr = &n[0], ciffer = *ciffer_ptr;
do {
if (ciffer >= '0' && ciffer <= '9')
ciffer_number = ciffer - '0';
else if (ciffer >= 'a' && ciffer <= 'z')
ciffer_number = ciffer - 'a' + 10;
else ciffer_number = -1; /* error */
if (ciffer_number >= 0 && ciffer_number < base)
res = res * base + ciffer_number;
ciffer_ptr++; ciffer = *ciffer_ptr;
}
while (ciffer != '\0');
return res;
}