我正在try 找出在C中是否有将字符串转换为整数的替代方法.

我经常在我的代码中设置以下模式.

char s[] = "45";

int num = atoi(s);

那么,有没有更好的方法呢?

推荐答案

strtol个更好的国际海事组织.另外,我喜欢strtonum,所以如果你有的话,请使用它(但请记住,它不是便携的):

long long
     strtonum(const char *nptr, long long minval, long long maxval,
     const char **errstr);

您可能还对C99中的标准函数strtoumax and strtoimax感兴趣.例如,你可以说:

uintmax_t num = strtoumax(s, NULL, 10);
if (num == UINTMAX_MAX && errno == ERANGE)
    /* Could not convert. */

不管怎样,离atoi远点:

呼叫atoi(str)应等同于:

(int) strtol(str, (char **)NULL, 10)

只是对错误的处理可能有所不同.If the value cannot be represented, the behavior is undefined美元.

C++相关问答推荐

C中的ATONE会扰乱SEN/CLUTE GMS应用程序中的其他字符串

使用SWI—Prolog的qsave_program生成二进制文件有什么好处?'

仅在给定的大小和对齐方式下正确创建全局

使用scanf在C中读取和存储文件中的值

如何将字符**传递给需要常量字符指针的常量数组的函数

预先分配虚拟地址空间的区域

这个C程序在工作中途停止获取输入.我收到分段故障(核心转储).我还是不知道问题出在哪里

C指针概念分段故障

用C语言计算文本文件中的整数个数

Boyer Moore算法的简单版本中的未定义行为

致命错误:ASM/rwan ce.h:没有这样的文件或目录.符号链接还不够

将字符串数组传递给C中的函数:`str[dim1][str_size]`vs`*str[dim1]`

Realloc():中止的下一个大小无效(核心转储)

在Ubuntu上使用库部署C程序的最佳实践

可以对两种 struct 类型中的任何一种进行操作的C函数

解密Chrome加密密钥

将数组中的所有元素初始化为 struct 中的相同值

Struct 内的数组赋值

Linux memcpy 限制关键字语法

如何使用 raylib 显示数组中的图像