-1

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

真正的功能相当大,我不能在这里发布整个代码。从下面提到的功能,我希望你们能对我在这里做什么有所了解。

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

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

我想知道我应该使用哪个函数才能获得整数变量值(null)?

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

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

4

3 回答 3

3

atoi 返回零

如果 str 中的第一个非空白字符序列不是有效整数,或者由于 str 为空或仅包含空白字符而不存在此类序列,则不执行转换并返回零。

此外,您NULL无法要求返回,因为您将这些值分配给int并且int不能保留 not NULL

于 2014-07-21T10:07:16.477 回答
1

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

您应该改用strtol,如下所示:

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

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

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

于 2014-07-21T10:00:51.820 回答
1

那不是很好吗?

C ++中没有整数值拼写为null

整数形式的 NULL 仅为 0。

于 2014-07-21T10:02:31.740 回答