在我的程序中,我有一个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变量值也变为空值而不是零??
答案 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。