CSDN博客

img avalonBBS

2-3

发表于2004/9/13 21:58:00  730人阅读

/*
编写函数htoi(s),把由16进制数字组成的字符串(包含可选的前缀0x或0X)转换成与之等价的整型值.
字符串中允许包含的数字包括:0~9,a~f,A~F.
*/
#include <stdio.h>
#include <math.h>
#include <stdlib.h>
int htoi(char *head)
{
 int number=0,bit=0;
 char *s=head;
 if(head==NULL)exit(-1);
 while(*s !='/0')s++;
 s--;/*s指向最后一个字符*/
 while( s!=head  )
 {//bit ,s  
  if(*s>='0'&&*s<='9'){
   number+=((*s-'0')*(signed int)pow(16,bit));
   s--;bit++;
   continue;}
  if(*s>='a'&&*s<='f'){
   number+=((*s-'a'+10)*(signed int)pow(16,bit));
   s--;bit++;
   continue;}
  if(*s>='A'&&*s<='F'){
   number+=((*s-'A'+10)*(signed int)pow(16,bit));
   s--;bit++;
   continue;}
  break; 
 }
 if(*s=='x' ||*s=='X'){
  s--;
  if(*s=='0' && s==head)
   return number;
  else return -1;
 }
 if( s==head)return number;
 return -1;
}
int main(void)
{
 char *a="0x";
 int  b=htoi(a);
 printf("b=%d/n",b);
 return 0;
}


 

0 0

相关博文

我的热门文章

img
取 消
img