所以我希望得到一点指导。我有一个带基数(基数)的函数,然后使用getchar()将获得从给定基数转换为整数表示的数字。
给出的唯一参数是基数,然后getchar()通过命令行获取数字表示。
所以,如果我通过
str2int 16
input a number: 3c
它应输出(16 ^ 1 * 3)+(16 ^ 0 * 12)= 48 + 12 = 60 。
我完全理解数学,以及转换基础的不同方法,但不知道如何编写某些内容。数学总是比代码容易得多,至少对我而言。
另一种计算方法是: (702)base 15 = 15 * 7 + 0 = 105; 15 * 105 + 2 = 1577
我不知道如何使用getchar()在C中表达这个?是否可以不使用数学函数?
答案 0 :(得分:0)
一次只能获得一个char
,直到不需要数字或不再需要数字。
unsigned shparkison(unsigned base) {
unsigned sum = 0;
int ch;
while ((ch = getchar()) != EOF) {
// one could instead look up the toupper(value) in an array "0123...ABC...Z";
// Following assumes ASCII
if (isdigit(ch)) ch -= '0';
else if (islower(ch)) ch -= 'A' - 10;
else if (isupper(ch)) ch -= 'a' - 10;
else {
break; // Not a digit
}
if (ch >= base) {
break; // Digit too high
}
unsigned sum_old = sum;
sum *= base;
sum += ch;
if (sum < sum_old) {
sum = sum_old;
break; // Overflow
}
}
ungetc(ch, stdin);
return sum;
}