我已经看到了使用指针的其他解决方案。我不太了解指针的工作原理,无法将它们实现到这个程序中。如果解决方案需要一个,有人可以解释为什么吗?我整晚都在用这个程序尝试各种事情,但一无所获。我阅读了练习所在的“The C Programming Language”书中的相关文本。我不能成为唯一被这个 D 难倒的人:
#include <stdio.h>
#include <math.h>
#include <ctype.h>
#define MAX 1000
int htoi(char s[]);
main()
{
char line[MAX];
int i, c;
printf("Enter the strig to convert to an integer:");
for(i=0; i<MAX && (c=getchar())!=EOF && c != '\n'; ++i)
line[i] = c;
int a =0;
a = htoi(line);
printf("%d", a);
}
int htoi(char s[])
{
int i, n, z;
n=0;
int total = 0;
for(i=0; s[i] != '\0'; ++i)
{
if (s[i] == 'a'||s[i] == 'A')
n = 10;
else if(s[i] == 'b'||s[i] == 'B')
n = 11;
else if(s[i] == 'c'||s[i] == 'C')
n = 12;
else if(s[i] == 'd'||s[i] == 'D')
n = 13;
else if(s[i] == 'e'||s[i] == 'E')
n = 14;
else if(s[i] == 'f'||s[i] == 'F')
n = 15;
else
n = s[i];
z = n * pow(16, i);
total = total + z;
}
return total;
}