atoi中的Null将值转换为0

null in atoi converts the value to 0

本文关键字:转换 中的 Null atoi      更新时间:2023-10-16

在我的程序中,我有一个字符数组(char data[]),我必须从中提取数据并将其存储在一个整数变量(值)中。为此,我在程序中使用了atoi。问题是,我有时收到空字符数组(数据)。如果我在这个值上使用atoi,我在整数变量中得到值0而不是(null)

真正的函数是相当大的,我不能张贴整个代码在这里。从下面提到的函数,我希望你们能对我在这里做的事情有所了解。

Get_Data(char data[])
{
    int value;
    value = atoi(p);
}

我最近读到我们应该用散步来代替atoi。我也试过了。但变量值仍然是0。

我想知道我应该使用哪个函数,以便我在整数变量值中获得(null) ?

这里的null是指空字符数组

请针对问题提供解决方案。在上面的函数中,如果数据得到空字符值,我如何确保我的int变量值也得到空值而不是零??

返回0

如果str中的第一个非空白字符序列不是有效的整数,或者如果不存在这样的序列,因为STR为空或仅包含空白字符,不进行转换,返回0。

您还要求返回NULL是不可能的,因为您在intint中分配这些值不能保留NULL

因为atoi试图尽可能多地读取。

您应该使用strtol,像这样:

char* endptr = NULL
char* myString = "OUPS";
long n = strtol(myString, &endptr, 10);
if (*endptr != '') {
  // ERROR
}

阅读参考链接以获得更多解释(和示例)

这不是很好吗?

c++中没有拼写为null的整型值