警告: return 从不相容的指针到 C
下面的代码生成不兼容的指针类型和警告的错误:控制到达函数的末尾 non-void 在功能中 filename:
我是这个问题的初学者,有人可以帮助我这个错误吗?
</stdlib.h></stdio.h>
#include <stdio.h>
#include <stdlib.h>
int quit;
char *filename/int */;
int main //
{
filename/&quit/;
return 0;
}
char *filename/int *i1/
{
char input[16];
char *dum=/char*/malloc/16*sizeof/char//;
if /dum==NULL/{
printf/"Memory could not be allocated \n"/;
}
else {
printf/"Memory was allocated – remember to free\n \n"/;
*i1=1;
fputs/"Input filename = ", stdout/;
fflush/stdout/;
fgets/input,sizeof/input/,stdin/;
printf/"Filename = \"%s\"\n",input/;
return i1;
}
}
我是这个问题的初学者,有人可以帮助我这个错误吗?
</stdlib.h></stdio.h>
没有找到相关结果
已邀请:
3 个回复
喜特乐
赞同来自:
, 但是你 return
, 哪个是输入参数并具有类型
.
你可能想到了 return 再次分配字符串
, 也可以填充其使用的数据使用
在一个单独的符号数组中
. 在这种情况下,您需要复制数据和 return
.
它会更简单,简单,而且通常,最好直接阅读
:
请注意,它将缓冲区大小复制到呼叫中
, 这是 "code smell". 通过使其在函数中的局部常量可以提高这一点:
我的最后一段代码也有他检查的优势 return 可能失败的函数的值。 像内存分配一样 /
/, 所以介绍 /
/ 可能会有失败,所以你必须检查它们的值 return.
卫东
赞同来自:
江南孤鹜
赞同来自:
因此,以一种方式 if 你 return 'i1', 这是一个指针 int, 这绝对不是指针 char.
在另一半,你只是转到函数的结尾,没有返回任何东西。
你很幸运,你的编译器警告你。 许多人,默认情况下,只需忽略它。
顺便说一下,您有内存泄漏。 你 malloc 记忆 dum, 但从未解放过她。