atoi中的null将值转换为0

时间:2014-07-21 09:59:26

标签: c++ c atoi strtol

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

真正的功能很大,我不能在这里发布整个代码。从下面提到的功能,我希望你们能够了解我在这里做的事情。

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

我最近读到我们应该使用strtol而不是atoi。我也试过了。但我的变量值仍为0。

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

null,我的意思是空字符数组

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

3 个答案:

答案 0 :(得分:2)

atoi返回零

  

如果str中的第一个非空白字符序列不是a   有效的整数,或者如果没有这样的序列,则可能   str为空或仅包含空格字符,不包含转换   执行并返回零。

此外,您无法返回NULL,因为您在int中分配了这些值,int无法保留NULL

答案 1 :(得分:1)

因为atoi尝试尽可能多地阅读。

您应该使用strtol代替,如下所示:

char* endptr = NULL
char* myString = "OUPS";
long n = strtol(myString, &endptr, 10);

if (*endptr != '\0') {
  // ERROR
}

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

答案 2 :(得分:1)

不是那么好吗?

C ++中没有拼写为null

的整数值

整数形式的NULL仅为0。