gpt4 book ai didi

c - C中的文件读取

转载 作者:太空宇宙 更新时间:2023-11-04 07:37:08 25 4
gpt4 key购买 nike

我是 C 的新手,我面临的问题是我有一个解压缩的二进制文件(即它的格式为某种格式)。

我想做的是打包并再次解压,看看它是否与原始解压版本相同。

有一件事值得一提:有人告诉我打包(即转换为打包)和解包(即转换为未打包)功能运行良好..只是想自己确认一下并学习一些 C...

我有两点我认为我做错了

1 : 我读取文件的方式

2:我没有正确考虑 packed 和 unpacked 的变量类型(即 packed 是 unsigned char * 而 unpacked 是 short * )

int main(void) {

FILE *fp;

unsigned char* packed ;
short* unpacked;
size_t result;
int fileSize;

fp = fopen(FILENAME, "rb");

fseek (fp , 0 , SEEK_END);
fileSize = ftell (fp);
rewind (fp);

unpacked = (short*) malloc (sizeof(char)*fileSize);

result = fread(unpacked,1,fileSize,fp);

short *originalUnpacked = unpacked;


convert_to_packed(&unpacked, &packed);

convert_to_unpacked(&unpacked, &packed);

if (originalUnpacked == unpacked)
{
puts ("Thats it !!");

}

fclose(fp );
return EXIT_SUCCESS;
}

最佳答案

这段代码很破烂。

当您应该比较内存时,您正在比较指针 (originalUnpacked == unpacked)。为什么要混合使用 short *unsigned char * 指针?如果数据是二进制“blob”,您应该只使用后者。

要比较内存,请使用标准的 memcmp() 函数。

关于c - C中的文件读取,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7876749/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com