实现atoi函数,c语言
时间: 2024-05-13 10:18:13 浏览: 12
下面是一个简单的实现:
```c
#include <stdio.h>
int myAtoi(char *str) {
int result = 0;
int sign = 1; // 默认为正数
int i = 0;
// 跳过空格
while (str[i] == ' ') {
i++;
}
// 处理符号
if (str[i] == '-' || str[i] == '+') {
sign = (str[i++] == '-') ? -1 : 1;
}
// 处理数字
while (str[i] >= '0' && str[i] <= '9') {
// 处理溢出
if (result > INT_MAX / 10 || (result == INT_MAX / 10 && str[i] - '0' > INT_MAX % 10)) {
return (sign == -1) ? INT_MIN : INT_MAX;
}
result = result * 10 + (str[i++] - '0');
}
return result * sign;
}
int main() {
char str[] = " -123456";
printf("%d\n", myAtoi(str));
return 0;
}
```
在该实现中,我们首先跳过字符串中的空格,然后处理符号。接下来,我们循环处理数字字符,将它们转换为整数并将其累加到结果中。我们还添加了一些错误处理,以避免溢出。最后,我们返回结果乘以符号。
相关推荐
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)