警告:从不兼容的指针类型警告传递'fprintf'的参数2:格式不是字符串文字而没有格式参数stdio.h:333:注意:期望'const char * restrict'但参数类型为'struct FILE *'
#include <stdio.h>
int main (void){
FILE *file;
unsigned char *buffer;
unsigned long fileLen;
//Open file
file = fopen("squirrel-gray.jpg", "rb");
if (!file)
{
fprintf(stderr, "Unable to open file %s", "squirrel_gray.jpg");
return;
}
//Get file length
fseek(file, 0, SEEK_END);
fileLen=ftell(file);
fseek(file, 0, SEEK_SET);
//Allocate memory
buffer=(char *)(fileLen);
if (!buffer)
{
fprintf(stderr, "Memory error!");
fclose(file);
}
fclose(file);
FILE *image;
image = fopen("img.jpg", "w");
fprintf(image, file);
fclose(image);
}
1 回答
这条线:
file
是FILE*
而不是格式字符串 . 编译器警告意味着它所说的内容(并且是语义错误) .大概是你打算把
buffer
的内容写成img.jpg?既然如此:你还没有将任何数据读入缓冲区,
你没有分配任何内存来缓冲,
格式化的I / O完全不适合在任何情况下编写二进制文件 .
也许: