C ++:没有从'FILE *()'到'FILE *'的已知转换

时间:2015-06-22 19:57:40

标签: c++ c++11 file-io

我一直在尝试使用临时文件删除文件中间的字符。但是,当我打电话时

    fputc(c, tmpfile);

其中c是char,tmpfile是FILE *,编译时得到以下内容:

dnhobf_fxn.cc:36:7: error: no matching function for call to 'fputc'
      fputc(c, tmpfile);
      ^~~~~
/usr/include/stdio.h:243:6: note: candidate function not viable: no known
      conversion from 'FILE *()' to 'FILE *' (aka '__sFILE *') for 2nd argument
int      fputc(int, FILE *);
         ^

这究竟是什么问题,我该如何纠正?我不熟悉FILE *()和FILE *之间的区别。

2 个答案:

答案 0 :(得分:2)

查看您的错误 - 编译器需要FILE*,但您正在传递FILE *() - 这是一个接受零参数并返回FILE*的函数。具体来说,您通过this函数传递零参数并返回FILE*

据推测,您的临时文件名称错误。

答案 1 :(得分:0)

错误与陈述完全一致 - 其中一个参数是函数指针(tmpfile),而不是实际上是FILE *