我正在尝试用C编写一个shell程序。以下函数应该获取用户行输入。我不断收到"从void*
到char**
错误的无效转换在我尝试 malloc 的行上。
我不明白为什么。谁能解释一下?
char *get_line_input(void)
{
int scan;
int buff_size = 1024;
int argument_tracker = 0;
char *line = malloc(sizeof(char) * buff_size);
while (1) {
scan = getchar();
if (scan == 'n') {
line[argument_tracker] = ' ';
return line;
} else {
line[argument_tracker] = scan;
}
argument_tracker++;
}
}
您可能使用的是C++编译器/C++模式,其中没有从void*
到T*
的隐式转换。在 C 中,不应收到此错误,因为void*
可以分配给任何其他数据指针而无需显式强制转换。
您可以使用 C 编译器,或者如果您必须使用编译器C++则适当地强制转换。
因为void *
不能在 c++ 中隐式转换为 char *
,而且您可能正在使用 c++。快速修复:
char *line = (char *)malloc(sizeof(char) * buff_size);
你应该阅读我是否投射了 malloc 的结果?