使用malloc时无效的转换错误

时间:2017-03-15 19:33:26

标签: c linux shell unix malloc

我正在尝试用C编写一个shell程序。以下函数应该用于获取用户行输入。我一直收到“尝试使用malloc的行上的void*char**错误的无效转换。

我不明白为什么。谁能解释一下?

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] = '\0';
      return line;
    } else {
      line[argument_tracker] = scan;
    }
    argument_tracker++;
  }
}

2 个答案:

答案 0 :(得分:2)

您可能正在使用C ++编译器/ C ++模式,其中没有从void*T*的隐式转换。在C中,您不应该得到此错误,因为void*可以在没有显式转换的情况下分配给任何其他数据指针。

您可以使用C编译器,或者必须使用C ++编译器,然后进行适当的转换。

答案 1 :(得分:1)

因为For i As Integer = 0 To dgv.RowCount - 1 无法在c ++中隐式转换为void *,并且您可能正在使用c ++。快速修复:

char *

您应该阅读Do I cast the result of malloc?