我已經寫了這個半htoi函數在c,它採用一個十六進制字符串,並將其變成十六進制int。寫作函數htoi的邏輯錯誤
*如果我解決這個問題,我可以把它轉化爲現實htoi功能
#include<stdio.h>
int main(void)
{
char c;
int a = 0x0;
//a += 1;if do this, we have added 1 to 0 hexadecimal
while((c = getchar()) != '`')
{
if((c >= '0') && (c <= '9')){
a = a * 16 + (c - '0');
printf("a is:%x c:%c\n", a, c);
}
else if((c >= 'a') && (c <= 'f')){
a = a * 16 + c;
printf("a is:%x c:%c\n", a, c);
}
else if((c >= 'A') && (c <= 'F')){
a = a * 16 + c;
printf("a is:%x c:%c\n", a, c);
}
}
printf("\nyour hexa number is:\n%hhx\n", a);
return 0;
}
,但它不能正常工作,而如果我改變 a = a * 16 + c
到 a = a * 10 + c
和 int a = 0x0
到 int a = 0
它作爲atoi工作
第二和第三種情況下不轉字母成若干 –
第三情況下,不這樣做正確的。 'a = a * 16 + c -'a'+ 10' –
plz給我正確的代碼 – arianpress