【发布时间】:2013-09-09 20:09:10
【问题描述】:
我正在构建快速的“配置阅读器”,它可以从文件中读取设置。 问题是,该函数返回“800”字符串,而带有该输入的 atol 返回 0。我不确定自己做错了什么。
所以,大致是这样的:
char *txtval=GetParamFromLine("WINDOW_WIDTH");
val = atol(txtval);
char* GetParamFromLine(char*parameter)
{
char text[16];
//
// do the reading procedure and fill the text
//
return text;
}
结果:atol(text) = 0(其中 text = "800" )
感谢您的帮助!
【问题讨论】:
-
你确定为 NULL 以终止
GetParamFromLine()中的字符串吗? -
您正在从 GetParamFromLine 返回指向局部变量(文本)的指针。
-
正如 Eugen 指出的那样,您正在返回一个指向在使用时不再存在的局部变量的指针。您不应提供错误和误导性的信息。
text不是"800"。以后使用调试器。 -
C++ 标签,有效吗?如果是,则按值返回 std::string,问题就解决了。不要在 C++ 程序中乱用 C 风格的字符串(没有很好的理由)。或者如果您仅限于 C,请删除 c++ 标签。
-
...当然,忘记
atol。如果需要使用 C 标准库函数,请使用strtol。
标签: c