C语言数据转换与UNIX日期时间处理
1. 整数转换函数的溢出/下溢测试
在C语言中,进行字符串到整数的转换时,需要考虑溢出和下溢的情况。下面将介绍几个常用的转换函数及其溢出/下溢测试方法。
1.1 strtol(3)函数的溢出/下溢测试
-
测试步骤 :
- 将变量
errno
清零。 - 调用
strtol(3)
函数进行转换。 - 如果返回值不是
LONG_MAX
(且不是LONG_MIN
),则没有发生溢出,测试结束;否则,进入步骤4。 - 测试
errno
的值。如果它仍然是步骤1中清零后的零值,则转换过程中没有发生溢出,返回值真正代表了转换后的输入值。 - 如果
errno
的值是ERANGE
,则转换过程中发生了溢出,返回值LONG_MAX
不能代表输入值。
- 将变量
-
代码示例 :
#include <stdio.h>
#include <stdlib.h>
#include <limits.h>
#include &