c语言字符串转int型
c语言字符串转int型
在C语言中,将字符串转换为int
类型通常使用标准库函数atoi()
(ASCII to integer)或strtol()
(string to long)。然而,需要注意的是这些函数不检查溢出,并且在转换无效字符串(如包含非数字字符的字符串)时可能会产生不可预测的结果。
以下是如何使用这些函数的示例:
使用atoi()
函数
#include <stdio.h>
#include <stdlib.h>
int main() {
const char *str = "12345";
int num = atoi(str);
printf("The number is: %d\n", num);
return 0;
}
使用strtol()
函数(更安全,因为它允许你检查错误和溢出):
#include <stdio.h>
#include <stdlib.h>
#include <errno.h>
#include <limits.h>
int main() {
const char *str = "12345";
char *endptr;
long num = strtol(str, &endptr, 10); // 10 表示十进制
// 检查是否有无效的字符在数字后面
if (*endptr != '\0') {
printf("Invalid characters after number\n");
return 1;
}
// 检查是否溢出
if ((num == LONG_MAX || num == LONG_MIN) && errno == ERANGE) {
printf("Overflow occurred\n");
return 1;
}
// 如果需要int类型,确保没有溢出
if (num > INT_MAX || num < INT_MIN) {
printf("Number is too large or too small for int\n");
return 1;
}
int int_num = (int)num;
printf("The number is: %d\n", int_num);
return 0;
}
注意:strtol()
函数返回一个long
类型的值,如果你需要int
类型,你需要确保转换的值在int
的范围内,否则可能会丢失数据或产生不可预测的结果。在上面的示例中,我们检查了是否发生了溢出,并将long
值强制转换为int
(只有在确保没有溢出的情况下才这样做)。
如果代码用法有什么问题,请将问题发至网易邮箱 m17872844806@163.com,作者将及时改正,欢迎与各位老爷交流讨论。
麻烦三连加关注!!!!
比心
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 单元测试从入门到精通
· 上周热点回顾(3.3-3.9)
· winform 绘制太阳,地球,月球 运作规律