我有很多数据以 bin 格式存储为结构序列。我希望能够随机读取任何结构并在 C 中修改它。我正在尝试使用以下代码,但它不起作用。有人可以帮我解决吗?
另外,是否可以从中间的文件中删除中间结构?
代码如下:
#include <stdio.h>
#include <stdlib.h>
struct rec {
int x,y,z;
};
void f_rite()
{
int i;
FILE *ptr_myfile;
struct rec my_record;
ptr_myfile=fopen("test.bin","w");
for ( i=0; i < 5; i++ ) {
my_record.x = i;
fwrite( &my_record, sizeof(struct rec), 1, ptr_myfile );
}
fclose(ptr_myfile);
return;
}
void f_read()
{
int i;
FILE *ptr_myfile;
struct rec my_record;
ptr_myfile=fopen("test.bin","r");
for ( i=1; i <= 5; i++) {
fread(&my_record,sizeof(struct rec),1,ptr_myfile);
printf("%d\n",my_record.x);
}
printf("\n");
fclose(ptr_myfile);
return;
}
void f_rerite()
{
int i;
FILE *ptr_myfile;
struct rec my_record;
ptr_myfile=fopen("test.bin","rw");
for ( i=5; i >= 0; i-- ) {
fseek( ptr_myfile, sizeof(struct rec)*i, SEEK_SET );
fread( &my_record, sizeof(struct rec), 1, ptr_myfile );
my_record.x = my_record.x + 100;
fwrite( &my_record, sizeof(struct rec), 1, ptr_myfile );
}
fclose(ptr_myfile);
return;
}
int main()
{
f_rite();
f_read();
f_rerite();
f_read();
return 0;
}