首页 > 其他分享 >c语言字符串转int型

c语言字符串转int型

时间:2024-05-25 18:11:06浏览次数:42  
标签:return 语言 int num printf 字符串 include 溢出

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

相关文章

  • C语言初阶 数据在内存中的存储
    数据在内存中的存储在编程的世界里,数据是如何存储和管理的,是每一位开发者都必须了解的基础知识。特别是对于C语言这样的底层语言,理解数据在内存中的存储方式,对于写出高效、安全的代码至关重要。本文将带您深入了解C语言中数据在内存中的存储方式。1.整数存储对于整型来说......
  • C语言数据结构栈的概念及结构、栈的实现、栈的初始化、销毁栈、入栈、出栈、检查是否
    文章目录前言栈的概念及结构栈的实现一、栈结构创建二、初始化结构三、销毁栈四、入栈五、出栈六、检查是否为空七、获取栈顶元素八、获取有效元素的个数九、测试1十、测试2总结前言C语言数据结构栈的概念及结构、栈的实现、栈的初始化、销毁栈、入栈、出栈、检......
  • C语言中的函数(2)
    目录前言函数的调用和声明函数的嵌套调用 函数的链式访问函数的递归调用递归求n的阶乘递归计算斐波那契数static和extern作用域和生命周期变量存储方式作用static修饰局部变量extern的使用static修饰全局变量static修饰函数函数的要求      内聚性强......
  • 探索c语言:深入了解指针
    1.内存和地址1.1内存和地址1.1内存我们可以通过一个小案例来了了解:假设有一栋宿舍楼,把你放在楼里,楼上有100个房间号,但房间里没有编号,刚好你的一个朋友找你玩,如果想要找到你就得挨个房间找,这样子效率很低,但是如果我们根据楼层和楼层的房间号的情况,给每个房间编上号,如: 1......
  • [SCTF 2021]loginme go语言ssti漏洞
    今天做个新颖的题,go中的ssti问题。进来点击访问/admin/index?id=1发现空白,只有admin能看,看看源码main.go。点击查看代码packagemainimport( "html/template" "loginme/middleware" "loginme/route" "loginme/templates" "github.com/gin-gonic/gin&quo......
  • 【开源】多语言大型语言模型的革新:百亿参数模型超越千亿参数性能
    大型人工智能模型,尤其是那些拥有千亿参数的模型,因其出色的商业应用表现而受到市场的青睐。但是,直接通过API使用这些模型可能会带来数据泄露的风险,尤其是当模型提供商如OpenAI等可能涉及数据隐私问题时。私有部署虽然是一个解决办法,但昂贵的授权费用对于许多企业来说是一笔不小......
  • (读后总结)深度解析机器学习(全6册)萃取自然语言与智能图像处理的经验 (卡蒂克·雷迪·
    链接:pan.baidu.com/s/1tIHXj9HmIYojAHqje09DTA?pwd=jqso提取码:jqso机器学习基础:介绍了机器学习的基本概念、分类以及发展历程,为后续章节奠定了理论基础。深度学习原理:详细讲解了深度学习的原理、架构以及优化方法,为自然语言处理和图像处理提供了强大的技术支持。自然语言处理......
  • 大语言模型PEFT
    目录一、PEFT的关键概念和方法部分参数微调概念方法优势适配器(Adapters)方法优势低秩分解(Low-rankFactorization)方法优势差分微调(DeltaTuning)方法优势多任务学习(Multi-taskLearning)方法优势二、低秩矩阵分解技术低秩分解的原理常见的低秩分解方法奇异值......
  • 关于字符串的功能函数小结
    笔者做项目过程中,使用了很多关于字符串的C库中自带功能函数,极大便利了项目流程。再次做一个小结,之后若有增加会继续补充。所需采用函数序号函数/描述1char*strcat(char*dest,constchar*src)【char*strncat(char*dest,constchar*src,size_tn)】功能:连接......
  • 探索Go语言的原子操作秘籍:sync/atomic.Value全解析
    引言​在并发编程的世界里,数据的一致性和线程安全是永恒的话题。Go语言以其独特的并发模型——goroutine和channel,简化了并发编程的复杂性。然而,在某些场景下,我们仍然需要一种机制来保证操作的原子性。这就是sync/atomic.Value发挥作用的地方。原子性:并发编程的基石​......