不用atoi函数,一切功能自己实现
时间: 2024-10-22 07:24:14 浏览: 20
qqek,c语言atoi源码在哪里,c语言
如果你想不用`atoi`函数实现字符串到整数的转换,你可以手动遍历字符串,根据每个字符的ASCII值推算出相应的十进制数值。以下是一个简单的示例,仅支持正整数:
```c
#include <stdio.h>
#include <ctype.h>
// 字符转换成十进制数值
int char_to_int(char c) {
if (isdigit(c)) {
return c - '0';
} else if (c >= 'a' && c <= 'z') { // 小写字母 A-Z 代表 10-35
return c - 'a' + 10;
} else if (c >= 'A' && c <= 'Z') { // 大写字母 a-z 代表 10-35
return c - 'A' + 10;
}
return 0; // 非数字字符默认为0
}
// 自己实现的字符串转整数函数
int string_to_int(const char *str) {
int result = 0;
Stack stack; // 用于暂存每一位的值
stack.top = 0;
while (*str) {
int digit = char_to_int(*str);
if (digit != 0) {
push(&stack, digit); // 压栈
}
str++;
}
while (stack.top > 0) {
result = result * 10 + pop(&stack); // 计算结果
}
return result;
}
int main() {
char input[] = "12345";
int number = string_to_int(input);
printf("String '%s' converted to integer is: %d\n", input, number);
return 0;
}
```
在这个例子中,我们使用了一个自定义的栈来临时存放每一位的数值,然后再依次累加。这个版本仅适用于非负整数,并且不处理空格、前导零或负号等复杂情况。
阅读全文