gpt4 book ai didi

c - 如何判断char数组表示的数字是否会溢出int?

转载 作者:太空宇宙 更新时间:2023-11-04 03:49:39 25 4
gpt4 key购买 nike

假设我有一个任意长度的 char 数组,它只包含用于在数组的每个条目中构成数字的数字的 ASCII 表示。例如

char my_array[10] = { '5', '2', '4', '7', 5, '1', '0', '8', '9', '\0' };

代表数字

524751089

当使用 stdlib.h. 中的 atoi() 从数组中提取时。

我面临的问题是当我尝试提取 char 数组表示的数字时,如何检查它是否会溢出 unsigned int。非常感谢任何有关如何在传递数组以将其提取并转换为 unsigned int 之前验证数组的建议。

最佳答案

strtoul()函数将转换为 unsigned long (其范围必须至少与 unsigned int 一样大),并允许您检测超出范围的值。您可以进一步将结果与 UINT_MAX 进行比较(来自 <limits.h> )以确定它是否在 unsigned int 的范围内:

unsigned long result;

errno = 0;
result = strtoul(my_array, NULL, 10);

if ((result == ULONG_MAX && errno == ERANGE) || result > UINT_MAX)
{
/* Out of range of unsigned int */
}
else
{
/* Within range of unsigned int */
}

关于c - 如何判断char数组表示的数字是否会溢出int?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21770044/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com