我将能够逐字节读取我所有的结构字节(字节 block 很大“sizeof(Today)”所以它有 8 个字节大)。我尝试了越来越多,但我做不到!请帮帮我!
bin文件:“temp.bin”
我的结构:
typedef struct
{
int year;
int month;
} Today;
这是每个周期应该读取 8 个字节的代码的一部分:
Today *d;
d = malloc(sizeof(Today));
fp = fopen("temp.bin", "rb");
while(!feof(fp))
{
fread(d, sizeof(Today), 1, fp);
printf("Year = %i\n", d->year);
printf("Month = %i\n", d->month);
}
fclose(fp);
更可能是 while 条件和 fread() 函数是错误的,但我尝试了所有可能的组合,但输出永远不是正确的! 谢谢大家
最佳答案
您可能希望首先为所有 block 分配空间,例如
fp = fopen( "temp.bin", "rb" );
if ( fp != NULL )
{
fseek( fp, 0L, SEEK_END );
size_t size = ftell(fp);
rewind(fp);
Today *d;
d = malloc(size);
fread( d, sizeof(Today), size/sizeof(Today), fp );
fclose(fp);
}
然后你得到了数组中的结构
例如printf( "月: %d", d[5].month);
然后对数组中的每个元素执行您需要执行的操作,然后再将其写回。取决于你的文件有多大
关于c - 如何在阅读时移入二进制文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33256373/