Tag: 二进制文件

压缩算法

我正在研究压缩算法,其中我们必须用C编写代码。程序获取一个文件并删除每个字符中最重要的位并将压缩文本存储在另一个文件中。 我写了一个名为compress的函数,如下所示。 我在释放out_buf的同时遇到了段错误。 任何帮助都将是一个巨大的乐趣。

掩盖最重要的一点

我写了这个函数来删除每个字节中最重要的位。 但是这个function似乎并没有像我希望的那样工作。 输出文件大小始终为“0”,我不明白为什么没有写入输出文件。 是否有更好,更简单的方法来删除每个字节中最重要的位?

“无法压缩二进制文件”是什么意思?

我已成功编译了我的代码,但它说: 注意:您还可以通过键入“run”后跟任何命令行参数来运行应用程序。 启动应用程序没有args … 检查库… 复制文件…… 处理文件…… 编译… 无法压缩二进制文件! 申请已退出。 我希望我的代码让用户输入三个数字,中间有空格,并将它们相乘,所以这是我的代码: #include #include int mult( int x, int y, int z) { return x * y * z; int main() { int x; int y; int z; printf(“Input two integers to be multiplied: “); scanf(“%d”, &x); scanf(“%d”, &y); scanf(“%d”, &z); printf(“The product of the three […]

读取C中的二进制文件

假设使用此函数原型编写二进制文件(需要打开以进行读取): void writeBinaryFile ( char *fileName , char *comment , int numberOfDoubles , double *doubles , int numberOfInts , int *ints ) (有关此function的更多详细信息,请参见下面的粘贴) … 我的书面代码只获取.bin文件的第一个字母…… 这是我的function: void readBinaryFile(char *fileName) { FILE *fp; char *ptr; double *ptr1; int *ptr2; ptr=(char*)malloc(sizeof(char)*5); ptr1=(double*)malloc(sizeof(double)*6); ptr2=(int*)malloc(sizeof(int)*6); fp=fopen ( fileName , “rb” ) ; fread(ptr,sizeof(char),11,fp); while(*ptr!=’\0′) { printf(“%c”,*ptr); ptr++; } fclose(fp); […]

更新包含c中结构的二进制文件,更改为损坏文件的其余部分的偏移量

我正在尝试编写一个方法,在给定包含要更新或追加的值的文件的情况下,将更新第二个二进制文件。 显然,当我覆盖二进制文件中的结构时,偏移量会以某种方式发生变化,从而破坏其后的所有内容。 我做错了什么,有没有办法在不截断和附加到文件的情况下阻止这种情况? 当前代码: typedef struct{ int number; double price; } stock; void update(char* updatefile, char* binfile){ FILE *fin, *fout; stock *currStock; stock *updateStock; int currPos; int update; int val1=0; double val2=0; currStock = malloc(sizeof(stock)); updateStock = malloc(sizeof(stock)); fin=fopen(updatefile,”r”); while (fscanf(fin, ” \n%d %lf”,&val1,&val2) != EOF) { currStock->number = val1; currStock->price = val2; printf(“Updating file […]

将文件以位forms写入C中的文件

我在C中实现了霍夫曼算法。我已经获得了基本function,直到获得二进制代码字。 例如,abcd将是100011000或类似的东西。 现在的问题是如何在压缩文件中以二进制forms编写此代码。 我的意思是如果我正常写它每1和0将是一个字符,所以没有压缩。 我需要用它们的位forms写出1和0。 是这样可能在C.如果是这样如何?

什么放在二进制数据文件的标题中

我有一个模拟读取我们创建的大型二进制数据文件(10到100的GB)。 出于速度原因,我们使用二进制 这些文件是系统相关的,从我们运行的每个系统上的文本文件转换而来,所以我不关心可移植性。 这些文件当前是POD结构的许多实例,用fwrite编写。 我需要更改结构,所以我想添加一个文件版本号的标头,它会随着结构的变化而增加。 由于我这样做,我想添加一些其他信息。 我正在考虑结构的大小,字节顺序,以及创建二进制文件的代码的svn版本号。 还有什么其他有用的东西可以添加吗?

一次读取一个二进制文件1个字节

我试图一次读取一个C 1字节的二进制文件,并在搜索互联网几个小时后仍然无法检索除垃圾和/或seg故障之外的任何内容。 基本上,二进制文件的格式为256项长度,每个项目为1个字节(0到255之间的无符号整数)。 我试图使用fseek和fread跳转到二进制文件中的“索引”并检索该值。 我目前的代码: unsigned int buffer; int index = 3; // any index value size_t indexOffset = 256 * index; fseek(file, indexOffset, SEEK_SET); fread(&buffer, 256, 1, file); printf(“%d\n”, buffer); 现在这段代码给了我随机垃圾数和段错误。 有关如何使其正常工作的任何提示?