如下函数写一个程序将字符串a[10]={'a','b','c','d'}转换为对应数值并打印出来?

例子如下,是将字符串转换为对应数值的函数atoi,可以处理可选的前导空白符以及一个可选的加·(+)或减(-)号。
int atoi(char s[])
{
int i, n, sign;

for (i = 0; isspace(s[i]); i++) /* skip white space */
;
sign = (s[i] == '-') ? -1 : 1;
if (s[i] == '+' || s[i] == '-') /* skip sign */
i++;
for (n = 0; isdigit(s[i]); i++)
n = 10 * n + (s[i] - '0');
return sign * n;
}

萧十郎
浏览 106回答 1
1回答

牧羊人nacy

abcd转换数值?&nbsp;你是要做16进制的吗?一般atoi只是转换10进制的&nbsp;不包括16进制如果你要支持16进制&nbsp;可以自行增加一个前导符&nbsp;比较常用的是x即如果字符串第一个字符为x&nbsp;则表示改字符串为16进制形式&nbsp;判断和你现有的符号判断类似,处理数据的时候不能用isdigit判断&nbsp;而是要加入a-f的判断计算的时候&nbsp;10*n改成16*n简单的例子&nbsp;int&nbsp;atoi(char&nbsp;s[])&nbsp;&nbsp;&nbsp;{&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;int&nbsp;i,&nbsp;n,&nbsp;sign;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;for&nbsp;(i&nbsp;=&nbsp;0;&nbsp;isspace(s[i]);&nbsp;i++)&nbsp;&nbsp;/*&nbsp;skip&nbsp;white&nbsp;space&nbsp;*/&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if(s[i]&nbsp;==&nbsp;'x')/*hex*/&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;i&nbsp;++;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;for&nbsp;(n&nbsp;=&nbsp;0;&nbsp;isdigit(s[i])&nbsp;||&nbsp;(s[i]>='a'&nbsp;&&&nbsp;s[i]&nbsp;<=&nbsp;'f');&nbsp;i++)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if(isdigit(s[i]))&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;n&nbsp;=&nbsp;16&nbsp;*&nbsp;n&nbsp;+&nbsp;(s[i]&nbsp;-&nbsp;'0');&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;else&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;n&nbsp;=&nbsp;16&nbsp;*&nbsp;n&nbsp;+&nbsp;(s[i]&nbsp;-&nbsp;'a')+10;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;n;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;sign&nbsp;=&nbsp;(s[i]&nbsp;==&nbsp;'-')&nbsp;?&nbsp;-1&nbsp;:&nbsp;1;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;(s[i]&nbsp;==&nbsp;'+'&nbsp;||&nbsp;s[i]&nbsp;==&nbsp;'-')&nbsp;&nbsp;/*&nbsp;skip&nbsp;sign&nbsp;*/&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;i++;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;for&nbsp;(n&nbsp;=&nbsp;0;&nbsp;isdigit(s[i]);&nbsp;i++)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;n&nbsp;=&nbsp;10&nbsp;*&nbsp;n&nbsp;+&nbsp;(s[i]&nbsp;-&nbsp;'0');&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;sign&nbsp;*&nbsp;n;&nbsp;&nbsp;&nbsp;}
打开App,查看更多内容
随时随地看视频慕课网APP