【问题标题】:Need to read data from png file and save it to the new one, how? C++需要从 png 文件中读取数据并将其保存到新文件中,如何? C++
【发布时间】:2012-01-09 14:45:02
【问题描述】:

我尝试从一个 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 结果得到了相同的大小... 不明白,为什么我不能将所有数据写入第二个文件...

【问题讨论】:

  • sizeof(char) * size 将始终等于 size
  • nah...我找到了解决方案,我应该使用:fwrite(buffer, 1, result, tmpf);
  • fread()等文件操作是否成功?
  • 是的,他们做到了!我已成功找到解决方案(往上看)

标签: c++ file binary filestream


【解决方案1】:

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

变化:

fputs(buffer, tmpf);

到:

fwrite(buffer, 1, size, tmpf);

【讨论】:

    猜你喜欢
    • 2021-07-10
    • 1970-01-01
    • 1970-01-01
    • 2021-10-01
    • 1970-01-01
    • 2016-10-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多