将长度指定的字符串(不是 NULL 终止的)转换为 int/float?

标签 c string

<分区>

Possible Duplicate:
Is there a strtol equivalent that does not require a null-terminated string?
strtod with limited string length

我正在尝试将 c 的“字符串”转换为各种 c 数字类型:int、float、long int...我的“字符串”不是以“\0”结尾的字符,但我有每个字符串的长度,所以我必须将字符复制到缓冲区中,在末尾添加 '\0',然后使用 atoi 或 strtol...

是否有一些库/函数已经实现了如下功能?

strToInt(char *str, int str_len)

strToFloat(char *str, int str_len)

最佳答案

也许甚至不用去图书馆。在整数情况下,你自己做起来真的很容易:

int str2int(const char* str, int len)
{
    int i;
    int ret = 0;
    for(i = 0; i < len; ++i)
    {
        ret = ret * 10 + (str[i] - '0');
    }
    return ret;
}

对于 float 和 double ,您可以对整数部分使用相同的代码,然后使用一个循环将每个连续字符的影响减少十进制位的因子。

额外的工作伴随着你想要添加的所有花里胡哨的东西而来——负数(我没有为示例代码中的那些而烦恼,但它们很容易添加)、科学记数法、有效性检查等.- 但一旦你决定坐下来去做,这并不难。

希望对您有所帮助!

关于将长度指定的字符串(不是 NULL 终止的)转换为 int/float?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9631225/

相关文章:

android - getBytes ("UCS-2") 在具有不同 API 级别的不同设备中返回不同的结果

c - 每次调整窗口大小时内存都会增加

c 打印指针指向的数组的地址

c - 为什么使用 char 类型作为循环索引会产生意想不到的结果?

python - 清理字符串列表

Python,拆分字符串

ios - 如何将 __autoreleasing 地址保留为类中的强属性?

c - C 中使用指针的函数无法返回正确的值

javascript - 如何在自定义JQuery中添加日期原始/后缀?

c++ - 双空终止字符串