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,作者将及时改正,欢迎与各位老爷交流讨论。
麻烦三连加关注!!!!
比心
标签:return,语言,int,num,printf,字符串,include,溢出 From: https://www.cnblogs.com/zkbklink/p/18212748