使用C语言编写一个函数,函数的功能是将一个包含数字的字符串转换为数值返回给调用者,例如输入参数为字符串s=“12345”返回值为数字 x=12345.该函数可以应用在串口通信中,如果收到对方发来的字符串信息,必须转换为数值,才能参与后续计算。请使该函数在时间和内存开销上最优。
没有做过时间和内存开销上最优,求大神帮忙
atoi这样的系统函数已经是相当优化了。再说了,串口通讯的速率是在100kb这个级别,CPU的速率是在GHz级别。换言之,即便你使用不优化的算法,两者的区别也微乎其微。
好比人的身体上多附着了一粒灰尘对人百米赛跑成绩的影响一样。
如果你是做面试题,可以给你一个自己转换的实现:
int r = 0;
for (int i = 0; i < strlen(s); i++)
{
r *= 10;
r += (int)(s[i] - '0');
}
return r;
当然这个代码不考虑负数。
这个功能要求,首先需要判断输入的字符串是否全部为数字,如果不是则不用转换;如果是,才调用转换函数。题目中,又没有限制不能使用 C 的标准函数,什么不能使用 atoi 呢!