c语言字符串转int型

  • admin
  • 2026-01-12 06:25:50

c语言字符串转int型

在C语言中,将字符串转换为int类型通常使用标准库函数atoi()(ASCII to integer)或strtol()(string to long)。然而,需要注意的是这些函数不检查溢出,并且在转换无效字符串(如包含非数字字符的字符串)时可能会产生不可预测的结果。

以下是如何使用这些函数的示例:

使用atoi()函数

#include

#include

int main() {

const char *str = "12345";

int num = atoi(str);

printf("The number is: %d\n", num);

return 0;

}

使用strtol()函数(更安全,因为它允许你检查错误和溢出):

#include

#include

#include

#include

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,作者将及时改正,欢迎与各位老爷交流讨论。

麻烦三连加关注!!!!

比心