C语言 使用 malloc 时出现无效的转换错误



我正在尝试用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 的结果?

相关内容

  • 没有找到相关文章

最新更新