#include
#include
#include
#include
#include
#define MAX_STR 80
void reverse ( char * str )
{
char *beg, *end;
beg = str;
end = str + strlen ( str ) - 1;
while ( beg < end )
{
*beg ^= *end ^= *beg ^= *end;
beg++; end--;
}
return;
}
int to_num ( char dig )
{
if ( !isxdigit ( dig ) )
{
fprintf ( stderr, "Not a hexadecimal number" );
exit ( EXIT_FAILURE );
}
if ( isalpha ( dig ) )
return tolower ( dig ) - 'a' + 10;
else return dig - '0';
}
intmain ( void )
{
char str[MAX_STR];
long dec = 0, exp = 0;
char *ptr;
printf ( "Enter a hexadecimal number: " );
scanf ( "%s", str );
/* discard "0x" or "0X" */
if ( str[0] == '0' )
if ( tolower ( str[1] ) == 'x' )
memmove ( str, str+2, 3 );
puts ( str );
/* use function reverse(s) of exercise 1-19.c */
reverse ( str );
ptr = str;
while ( *ptr )
{
dec = dec + to_num ( *ptr ) * pow ( 16, exp );
exp++;
ptr++;
}
printf ( "Decimal: %ld\n", dec );
return EXIT_SUCCESS;
}
#include
#include
#include
#include
#define MAX_STR 80
void reverse ( char * str )
{
char *beg, *end;
beg = str;
end = str + strlen ( str ) - 1;
while ( beg < end )
{
*beg ^= *end ^= *beg ^= *end;
beg++; end--;
}
return;
}
int to_num ( char dig )
{
if ( !isxdigit ( dig ) )
{
fprintf ( stderr, "Not a hexadecimal number" );
exit ( EXIT_FAILURE );
}
if ( isalpha ( dig ) )
return tolower ( dig ) - 'a' + 10;
else return dig - '0';
}
intmain ( void )
{
char str[MAX_STR];
long dec = 0, exp = 0;
char *ptr;
printf ( "Enter a hexadecimal number: " );
scanf ( "%s", str );
/* discard "0x" or "0X" */
if ( str[0] == '0' )
if ( tolower ( str[1] ) == 'x' )
memmove ( str, str+2, 3 );
puts ( str );
/* use function reverse(s) of exercise 1-19.c */
reverse ( str );
ptr = str;
while ( *ptr )
{
dec = dec + to_num ( *ptr ) * pow ( 16, exp );
exp++;
ptr++;
}
printf ( "Decimal: %ld\n", dec );
return EXIT_SUCCESS;
}
RSS Feed
Twitter
Orkut