2桁を超えると失敗します....16進数を整数に変換するCプログラム
例:入力:0xf
出力:15
しかし、入力:0xFF
出力:-1
char s[20],hexdigit=0,i=0,deci=0;
scanf("%[^\n]",s);
if(s[0]=='0' && (s[1]== 'X' || s[1]=='x'))
i=2;
for(;s[i]!='\0';i++){
if(s[i]>='0' && s[i]<='9')
hexdigit=s[i]-'0';
else if(s[i]>='a' && s[i]<='f')
hexdigit=s[i]-'a'+10;
else if(s[i]>='A' && s[i]<='F')
hexdigit=s[i]-'A'+10;
else
break;
deci=(16*deci)+hexdigit;
}
printf("\n%d",deci);
http://ericlippert.com/2014/03/05/how-to-debug-small-programs/ – Biffen
:コードは次のようになります... – John3136
'deci'はちょうど' char'です - あなたはそれを適切な 'int'型にする必要があります。 –