自己实现一个atoi函数,用于将字符串转换成整形
时间: 2024-03-25 21:38:28 浏览: 13
好的,我来为您编写一个atoi函数的实现。
```c
int myAtoi(char* str) {
int sign = 1, num = 0, i = 0;
while (str[i] == ' ') {
i++;
}
if (str[i] == '+' || str[i] == '-') {
sign = (str[i++] == '+') ? 1 : -1;
}
while (str[i] >= '0' && str[i] <= '9') {
if (num > INT_MAX / 10 || (num == INT_MAX / 10 && str[i] - '0' > 7)) {
return (sign == 1) ? INT_MAX : INT_MIN;
}
num = num * 10 + (str[i++] - '0');
}
return sign * num;
}
```
这个函数的实现比较简单,首先跳过字符串开头的空格字符,然后判断符号位,如果有符号位则记录下来,接着遍历字符串中的数字字符,将其转换成数字并乘以10的n次方累加,直到遇到非数字字符为止。在累加数字的过程中需要判断是否会溢出,如果溢出则返回INT_MAX或INT_MIN。最后返回数字乘以符号位。
相关问题
用C语言实现输入一个字符串,将它传换为整形
您好,可以使用C语言中的atoi函数将输入的字符串转换为整型。示例代码如下:
```
#include <stdio.h>
#include <stdlib.h>
int main() {
char str[100];
int num;
printf("请输入一个字符串:");
scanf("%s", str);
num = atoi(str);
printf("转换后的整数为:%d\n", num);
return ;
}
```
以上是回答您的问题,希望能对您有所帮助。
C语言将字符串转化成整形
可以使用C语言标准库中的`atoi`函数将字符串转换为整数。例如:
```c
#include <stdio.h>
#include <stdlib.h>
int main() {
char str[] = "123";
int num = atoi(str);
printf("%d\n", num);
return 0;
}
```
输出结果为:
```
123
```