gpt4 book ai didi

c - 如何在阅读时移入二进制文件?

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

我将能够逐字节读取我所有的结构字节(字节 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/

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