2-3

/*
編寫函數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;
}


 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章