【发布时间】:2013-01-30 02:50:50
【问题描述】:
这是家庭作业的一部分。
我试图在我的方法 getLine 中读取并返回文件的单行。
char *getLine(FILE *input) {
char line[30];
if(fgets(line, sizeof(line), input)!=NULL)
{
return line;
}else{
return NULL;
}
}
根据我所学过的指针,这似乎可行,但是我无法删除警告消息warning: function returns address of local variable [enabled by default]。此警告指的是return line; 行。我的任务要求我在编译时没有警告或错误。我看不出我做错了什么。
我找到的大部分帮助都建议为文本行分配 malloc-ing 空间,但我们还没有在课堂上介绍过,即使我在另一堂课上做过一些。这真的是最好的方法吗?如果是这样,我可以在程序的任何地方释放吗?
【问题讨论】:
-
函数返回时局部变量不复存在,然后返回一个悬空指针。让我找个骗子。
-
如果要在堆上分配内存,请使用
malloc。而这个问题已经在这里被问过无数次了。 -
这是一个很常见的错误,所以你肯定会发现很多关于遇到这个问题的帖子 :) 原因之一是大多数编译器甚至不会警告你你在做什么:ideone.com/S5Se71
-
这意味着你应该确切地知道你在做什么:)
-
所以这个问题是重复的吗?什么?
标签: c pointers return compiler-warnings