#include <stdio.h>
#define MAXLINE 19
int getlines(char s[],int lim);
int hToi(char s[]);
int main(void)
{
int len,inter;
char line[MAXLINE];
printf("Please enter hexadecimal:\n");
while((len = getlines(line,MAXLINE)) > 0)
{
if((inter = hToi(line)))
printf("Decimalism is %u\n",inter);
else
printf("Please enter the correct format!\n");
printf("Whether to continue?(Enter quit):\n");
}
printf("Bye!\n");
return 0;
}
int getlines(char s[],int n)
{
int c,i;
for(i = 0; i < n - 1 && (c = getchar()) != EOF && c != '\n';++i)
s[i] = c;
if(c == '\n')
{
s[i] = c;
s[i] = '\0';
}
if(i >= n - 1)
while(getchar() != '\n')
continue;
return i;
}
int hToi(char s[])
{
int i,j,z;
int n;
const int number = 17;
char hxs[] = {'0','1','2','3','4','5','6','7','8','9','A','B','C','D','E','F'};
n = 0;
for(i = 0; s[i] != '\0'; ++i)
if(s[i] >= 'a' && s[i] <= 'z')
s[i] = s[i] + 'A' - 'a';
i = 0;
if(s[i] == '0')
{
++i;
if(s[i] == 'x' || 'X')
++i;
}
z = 0;
while(s[i] != '\0'){
for(j = 0; j < number; ++j)
if(s[i] == hxs[j])
{
n = 16 * n + j;
z = 1;
break;
}
if(!z)
return 0;
z = 0;
++i;
}
return n;
}
#define MAXLINE 19
int getlines(char s[],int lim);
int hToi(char s[]);
int main(void)
{
int len,inter;
char line[MAXLINE];
printf("Please enter hexadecimal:\n");
while((len = getlines(line,MAXLINE)) > 0)
{
if((inter = hToi(line)))
printf("Decimalism is %u\n",inter);
else
printf("Please enter the correct format!\n");
printf("Whether to continue?(Enter quit):\n");
}
printf("Bye!\n");
return 0;
}
int getlines(char s[],int n)
{
int c,i;
for(i = 0; i < n - 1 && (c = getchar()) != EOF && c != '\n';++i)
s[i] = c;
if(c == '\n')
{
s[i] = c;
s[i] = '\0';
}
if(i >= n - 1)
while(getchar() != '\n')
continue;
return i;
}
int hToi(char s[])
{
int i,j,z;
int n;
const int number = 17;
char hxs[] = {'0','1','2','3','4','5','6','7','8','9','A','B','C','D','E','F'};
n = 0;
for(i = 0; s[i] != '\0'; ++i)
if(s[i] >= 'a' && s[i] <= 'z')
s[i] = s[i] + 'A' - 'a';
i = 0;
if(s[i] == '0')
{
++i;
if(s[i] == 'x' || 'X')
++i;
}
z = 0;
while(s[i] != '\0'){
for(j = 0; j < number; ++j)
if(s[i] == hxs[j])
{
n = 16 * n + j;
z = 1;
break;
}
if(!z)
return 0;
z = 0;
++i;
}
return n;
}