我试图用C语言读取一个带有read()
和open()
的png文件,但我得到的都是损坏的数据。下面是我的代码:
int r;
int fd;
char buff[4097];
fd = open("image.png", O_RDONLY);
while ((r = read(fd, buff, 4096)) > 0)
{
buff[r] = '\0';
printf("%s", buff);
}
close(fd);
前8-10个字节是相同的,然后数据被破坏,与原始图像完全不匹配。谢谢你的帮忙
发布于 2014-12-18 06:48:34
人们不应该期望能够读取二进制文件并将其打印为字符串。为了查看文件中的实际内容,将其打印为更适合于二进制格式的内容-例如,十六进制:
int i = 0;
while ((r = read(fd, buff, 4096)) > 0) {
for (int j = 0 ; j != r ; j++ ) {
printf("%02x ", buff[j]);
if (i % 16 == 0) {
printf("\n");
}
i++;
}
}
printf("\n");
请注意,这段代码只是从您的图像文件中获取原始字节,而没有尝试解释它。您的文件也可能是压缩的,因此尝试解释它可能是一项复杂的任务。
https://stackoverflow.com/questions/27536225
复制相似问题