我有以下场景,其中任何输入字符串都将转换为整数。
Example:
result = get_integer_from_string("100");
result == 100; // true
如何在不使用任何库的情况下编写此函数?我可以通过使用库来做到这一点。
按着这些次序:
我不能告诉你代码,它不会帮助你学习,尝试自己实现代码,这很容易!
循环遍历字符串,从结尾到开头。获取每个数字,并将其转换为十进制值。将第一个(在反向循环中)乘以1
并存储结果。将第二个乘以10
并添加到前一个的结果。等等。
这很容易出现错误情况,但如果字符串是有效整数,则应该可以工作:
int str2int(const char* str) {
int result = 0;
char* p = str;
for (;;) {
char c = *p++;
if (c < '0' || c > '9')
break;
result *= 10;
result += c - '0';
}
return result;
}
它的行为接近atoi()
- 停止对任何非数字的处理,并为空输入返回 0。