【问题标题】:incompatible pointer types passing 'char [3]' to parameter of type 'FILE *' [closed]将'char [3]'传递给'FILE *'类型参数的不兼容指针类型[关闭]
【发布时间】:2017-11-27 12:32:47
【问题描述】:

fread 应该返回它读取“size”的次数。所以我已经将该值分配给一个变量,但是当我想打印数字时,我收到了上面的错误。

FILE* card_raw  = fopen( memory , "r") ;
int buffer[512] ;
int readbytes = fread( buffer , 1 , 512 , card_raw ) ;
fprintf("%i" , readbytes );

【问题讨论】:

  • 消息指的是哪一行?
  • fprintf?你的意思是printf
  • 是的,我的意思是 printf
  • 当有答案发布时,请不要完全改变问题。如果您有新问题,请单独提出。我将回滚编辑,因为它会使发布的答案过时。
  • @Pegi 只问一个新问题,别管这个问题。

标签: c file pointers


【解决方案1】:

int fprintf(FILE * restrict stream,const char * restrict format, ...);

你传递了一个 3 个字符的字符串 "%i",这就是它所抱怨的。

如果是printf,您不需要指定文件流。 printf 函数将字符发送到标准 输出流stdout

printf("%zu",readbytes);

同时声明readbytes 类型为size_t

如果要将其打印到stdoutstderr 或其他文件流,则语法为fprintf(stderr,"%zu",readbytes)(使用fprintf

【讨论】:

  • fprintf() 中的 f 只是一个拼写错误,或者它是一个诊断信息,所以很可能缺少一个 stderr编辑:我们have a winner,这只是一个错字。
  • @FelixPalmen.:这实际上是 OP 可能想要的,因为 OP 会按照您所说的检查正在阅读的内容。
  • @FelixPalmen.: 是的,看来是这样......我们赢了。
猜你喜欢
  • 2021-12-11
  • 2015-03-08
  • 2018-05-23
  • 2021-06-29
  • 1970-01-01
  • 1970-01-01
  • 2017-12-11
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多