C语言 函数实现atoi
时间: 2023-05-21 17:02:24 浏览: 157
函数实现atoi的代码如下:
```
int atoi(const char *str) {
int res = 0;
int sign = 1;
int i = 0;
if (str[0] == '-') {
sign = -1;
i++;
}
for (; str[i] != '\0'; ++i) {
if (str[i] < '0' || str[i] > '9') {
break;
}
res = res * 10 + str[i] - '0';
}
return sign * res;
}
```
这个函数可以将一个字符串转换成整数。如果字符串以负号开头,那么返回的整数也是负数。如果字符串中包含非数字字符,那么函数会停止转换并返回已经转换的整数。
相关问题
c语言模拟实现atoi
在C语言中,`atoi()`函数是一个标准库函数,用于将字符串转换为整数。如果你想要手动模拟这个功能,你可以编写一个简单的函数,遍历输入的字符串,并逐字符累加对应的数值,直到遇到非数字字符为止。以下是一个简化的示例:
```c
#include <stdio.h>
#include <ctype.h>
int my_atoi(const char *str) {
int num = 0;
int sign = 1; // 表示正数,初始化为1
while (*str != '\0') { // 遍历字符串,直到遇到结束符
if (isdigit(*str)) { // 如果是数字字符
num = num * 10 + (*str - '0'); // 累加数值
} else if (*str == '-') { // 如果遇到减号,改变符号为负数
sign = -1;
}
str++; // 移动指针到下一个字符
}
return num * sign; // 返回结果,考虑了正负数的情况
}
int main() {
const char *input = "12345";
int converted_num = my_atoi(input);
printf("Converted number: %d\n", converted_num);
return 0;
}
```
在这个示例中,`my_atoi`函数会处理一些基本错误,比如空字符串、前导空格以及包含非数字字符的情况。不过请注意,这只是一个基础的模拟,实际的`atoi()`函数有更复杂的错误处理机制。
c语言函数实现:atoi()功能:将字符串IP地址转为四字节整数
以下是一个简单的实现,可以将字符串格式的IP地址转换为四字节整数:
```c
#include <stdio.h>
#include <string.h>
unsigned int atoi(const char *str_ip)
{
int i, j;
unsigned int num = 0;
unsigned char b[4];
// 将字符串按照 . 分割为四个部分
sscanf(str_ip, "%d.%d.%d.%d", &b[0], &b[1], &b[2], &b[3]);
// 将每个部分转换为一个字节,并合并为一个四字节整数
for (i = 0; i < 4; i++) {
num += b[i] << (24 - i * 8);
}
return num;
}
```
使用示例:
```c
int main()
{
const char* str_ip = "192.168.1.1";
unsigned int ip = atoi(str_ip);
printf("IP address: %u\n", ip);
return 0;
}
```
输出结果:
```
IP address: 3232235777
```
阅读全文