需要从png文件中读取数据并将其保存到新文件中,如何? C ++

时间:2012-01-09 14:45:02

标签: c++ file binary filestream

我尝试从一个PNG文件中读取数据,并希望将此数据写入新文件并保存。 我做这样的事情:

FILE *fp = fopen("C:\\dev\\1.png", "rb");
fseek(fp, 0, SEEK_END);
long size = ftell(fp);
rewind(fp);
char *buffer = (char*)malloc(sizeof(char)*size);
size_t result = fread(buffer, 1, size, fp);
FILE *tmpf = fopen("C:\\dev\\1_1.png", "wb");
fputs(buffer, tmpf);
fflush(tmpf);
fclose(tmpf);

我遇到了问题,第二个文件只有其内容,只有:‰PNG SUB

在调试中,我检查过,long size = 652521,size_t结果的大小相同...... 不明白,为什么我不能把所有数据都写到第二个文件......

1 个答案:

答案 0 :(得分:4)

不要使用fputs - 使用fwrite - fputs用于字符串,并将在第一个零字节处终止。

变化:

fputs(buffer, tmpf);

为:

fwrite(buffer, 1, size, tmpf);