收录自己写过的代码

1、编写函数 htoi(s),把由十六进制数字组成的字符串(包含可选的前缀0x或0X)转换为与之等价的整型值。字符串中允许包含的数字包括:0~9、a~f以及A~F。

#include<stdio.h>
#include<math.h>
#define MAX 1024

 int main(int argc, char* argv[])
 {
 	
 	char chars[MAX];/*record input chars*/
 	char c;/*record iuput char */
 	int i,j,p;/*record the number of input char*/
 	long long int num10=0;/*for cache number_10*/ 
 	
 	for(i=0;(c=getchar())!='\n'&&i<MAX-1;++i)
 	{
 		chars[i]=c;
 		if((c<='f'&&c>='a')||(c>='0'&&c<='9')||(c>='A'&&c<='F'))
 		{
 			
 		}
 		else if((c=='x'||c=='X')&&i==1&&chars[0]=='0')
 		{
 			chars[i]=c;
 		}
 		else
 		{
 			printf("Please input char in 'a'~'f' or 'A'~'F' or '0'~'9'\n ");
 			return ;
 		}
 	}
	 chars[i]='\0';
 
 	for(j=i-1;j>=0;--j)
 	{
 		int a=chars[j];
 		if(a<='f'&&a>='a')
 		{
 			a=a-'a'+10;
 		}
 		else if(a<='F'&&a>='A')
 		{
 			a=a-'A'+10;
 		}
 		else if(a<='9'&&a>='0')
 		{
 			a=a-'0';
 		}
 		else
 		{
 			break;
 		}
 	
 		num10=num10+a*pow(16,i-j-1);
 	}
 	printf("HEX number is %s, decimal number is %d\n",chars,num10);
 	
 	return 0;
 }
 


你可能感兴趣的:(收录自己写过的代码)