atoi的封装

来源:互联网 发布:r330清零软件 编辑:程序博客网 时间:2024/06/09 16:12

 atoi可以实现字符串向数字的转换,然后如果字符串不是由数字组成,或者是数字溢出了,那么atoi的返回值是未知的。因此,对atoi进行封装,可以通过返回值确认该字符串是否可以转换为数字,并输出返回的数字。

/*** @brief atoi_wrap** 字符串转换成正数的封装.* @param[in] pBuf 要转换的字符串* @param[in] bufSize 要转换的字符串长度* @param[out] pVal 转换后的值* @return -1转换失败,1转换成功*/int atoi_wrap(const char* pBuf, int bufSize, int* pVal){    int i       = 0;    int hasSign = -1;    if ((NULL == pVal) || (NULL == pBuf) || (0 == bufSize))    {        return GM_FALSE;    }    for (i = 0; i < bufSize; ++i)    {        if ('\0' == *(pBuf + i))        {            bufSize = i;        }    }    /** @brief 判断是正数还是负数 */    if (('-' == *pBuf) || ('+' == *pBuf))    {        hasSign = 1;    }    if (GM_TRUE == hasSign)    {        if (1 == bufSize)        {            return -1;        }        for (i = 1; i < bufSize; ++i)        {            if ((*(pBuf + i) < '0') || (*(pBuf + i) > '9'))            {                return -1;            }        }    }    else    {        for (i = 0; i < bufSize; ++i)        {            if ((*(pBuf + i) < '0') || (*(pBuf + i) > '9'))            {                return -1;            }        }    }    *pVal = atoi(pBuf);    if (((-2147483647L - 1) == *pVal) || ((2147483647L) == *pVal))    {        return -1;    }    else    {        return 1;    }}


 

原创粉丝点击