C语言实现字符串转换整数
时间: 2024-10-20 18:19:19 浏览: 61
在C语言中,将字符串转换成整数通常使用库函数`atoi()`、`strtol()`或手动编写解析算法。以下是使用`atoi()`函数的一个简单示例:
```c
#include <stdio.h>
#include <stdlib.h>
int main() {
char str[] = "12345";
int num = atoi(str);
printf("转换后的整数是:%d\n", num);
return 0;
}
```
在这个例子中,`atoi()`会尝试将字符串`str`的内容转换为十进制整数,并将其结果存储在变量`num`中。
然而,`atoi()`对于非数字字符处理较简单,如果输入包含非法字符,它会直接返回错误的结果或者程序崩溃。更安全的方法是使用`strtol()`函数,它允许指定分隔符和错误处理机制:
```c
#include <stdio.h>
#include <stdlib.h>
#include <errno.h>
int main() {
char str[] = "123abc";
long long num;
char *endptr;
num = strtol(str, &endptr, 10); // 10表示使用十进制
if (*endptr == '\0') { // 如果 endptr 指针到达结束,说明没有遇到非数字字符
printf("转换后的整数是:%lld\n", num);
} else {
printf("无法将字符串 '%s' 转换为整数,错误信息:%s\n", str, strerror(errno));
}
return 0;
}
```
在这里,`strtol()`会停止解析并返回到目前为止读取的部分作为有效数值,剩余部分由`endptr`指向。
阅读全文