41、深入探索C库中的时间处理功能

深入探索C库中的时间处理功能

1. 输入程序的不足

在某些示例程序中,存在一个明显的不足,即对数字输入缺乏验证。例如,当用户输入的ASCII数字表示的数值太大,超出了32位整数的范围,或者输入的字符组合无法转换为数值时, scanf() 函数返回给程序的值将是一个无意义的垃圾值,与用户输入的内容没有必然联系。

2. C库中的时间处理函数

标准C库包含了一组相当丰富的用于处理日期和时间的函数。这些函数最初是为处理20世纪70年代AT&T小型计算机硬件中的实时时钟生成的日期值而设计的,但如今已成为任何操作系统实时时钟支持的标准接口。无论使用何种操作系统,用C语言为Windows编程的人都会使用同一组函数,并且它们的工作方式大致相同。

3. 时间值的表示:time_t

在标准C库的深处,有一段代码在被调用时会查看计算机的实时时钟,读取当前的日期和时间,并将其转换为一个标准的32位无符号整数值。这个值理论上是自“Unix纪元”(即1970年1月1日00:00:00世界时)以来所经过的秒数。每过一秒,这个值就会加1。当通过C库读取当前时间或日期时,获取的就是这个值,它被称为 time_t

2001年9月9日上午7:46:40 UTC, time_t 值变为10位(即自1970年1月1日以来的10亿秒)。虽然近期不会出现类似Y2K的问题,但在2038年1月19日上午3:14:07,将 time_t 视为有符号整数的计算机将看到它归零,因为32位有符号整数只能表示最大为2,147,483,647的

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值