这是作业分配的一部分。C返回字符[]警告“返回本地变量的地址”
我想在我的方法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空间,但是我们还没有在课堂上介绍过,即使我已经在另一课中做了一些。这真的是最好的方法吗?如果是这样,我可以在程序的任何地方释放吗?
函数返回时局部变量不再存在,则返回一个悬挂指针。让我找到一个骗局。 – 2013-02-14 10:21:12
如果要在堆上分配内存,请使用'malloc'。这个问题在这里已经被无数次地提出。 – KBart 2013-02-14 10:22:29
这是很常见的错误,所以你肯定会发现几十篇有关遇到这个问题的文章:)其中一个原因是,大多数编译器甚至不会警告你你在做什么:http:// ideone。 com/S5Se71 – LihO 2013-02-14 10:32:47