从char*到void的赋值*

从char*到void的赋值*,c,pointers,void-pointers,char-pointer,C,Pointers,Void Pointers,Char Pointer,处理一个黑客等级问题,用C语言打印令牌。我的问题不是来自问题的逻辑。i、 e.查找空格并打印'\n',而不是来自给定的代码位 char *s; s = malloc(1024 * sizeof(char)); scanf("%[^\n]", s); s = realloc(s, strlen(s) + 1); 我在Mac终端窗口上编译,得到了一个从char*到void的不兼容类型* 我试过一些方法,包括打字,但这似乎让我陷入更深的麻烦。 有人能解释一下我还有什么问题吗? 感

处理一个黑客等级问题,用C语言打印令牌。我的问题不是来自问题的逻辑。i、 e.查找空格并打印'\n',而不是来自给定的代码位

char *s;
s = malloc(1024 * sizeof(char));
scanf("%[^\n]", s);
s = realloc(s, strlen(s) + 1);
我在Mac终端窗口上编译,得到了一个从char*到void的不兼容类型* 我试过一些方法,包括打字,但这似乎让我陷入更深的麻烦。 有人能解释一下我还有什么问题吗?
感谢

< p>如果你将此编译为C++,那么必须从Maloc(在C++中很少使用)和RealLoc的空洞*返回值强制转换为char *。C++对这些事情有更严格的规则。正确的方法是使用一个较新的模板转换操作符,例如reinterpret_cast。但是一个简单的(char*)仍然可以正常工作:

s = (char*)malloc(...)

由于代码看起来像是普通的旧C,这类代码可能是在20世纪80年代编写的,最好是将源文件命名为something.C(不是something.cpp或something.cxx等),然后编译器将使用更宽松的C规则,发出一些警告,但可能不是错误。尽管注意,C已经定义了新版本,但我没有跟上,编译器已经在不断增长新的错误和警告检测,包括静态分析技术,可能会报告错误。

看来,你正在编译程序作为C++程序。