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

麻烦三连加关注!!!!

比心

posted @   琨为玉也  阅读(783)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 单元测试从入门到精通
· 上周热点回顾(3.3-3.9)
· winform 绘制太阳,地球,月球 运作规律
点击右上角即可分享
微信分享提示