将长度指定的字符串(不以 NUL 结尾)转换为 int/float?

Mic*_*ine 6 c string

可能的重复:
是否有不需要以空字符结尾的字符串的 strtol 等效项?
字符串长度有限的 strtod

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

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

strToInt(char *str, int str_len)

strToFloat(char *str, int str_len)
Run Code Online (Sandbox Code Playgroud)

MBy*_*ByD 2

根据定义,C 字符串是以 null 结尾的字符缓冲区。否则这些就不是 C 字符串。

我想说的是,如果您有一个不是 C 字符串的缓冲区,那么最简单的方法是将其转换为字符串,并使用标准函数(atoi 等)。通常它甚至不需要分配更多内存,而只需要当前字符串的副本。