gpt4 book ai didi

c - 读取二进制文件问题

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

#include <stdio.h>


int main()
{
int i,j;
FILE *f;
f=fopen("./pathto/sth.bmp","rb");
fread(&i,1, 1, f);
printf("%d ",i);
fread(&j,1, 1, f);
printf("%d ",j);

return 0;
}

我想从 bmp 文件中读取前 2 个值。我知道他们是 66 岁和 77 岁。问题是,如果我只读取第一个值,则变量“i”变为 66,这很好。但是,如果我读取第二个值,如“j”,则“j”变为 77,这很好,而“i”采用随机值,如 196540,我不明白为什么。因此,如果我读取第一个值,则一切正常。如果我读取前 2 个值,最后一个值是好的,但第一个修改,它变成一个随机值,比如 196540

最佳答案

当我尝试你的程序时,我得到了两个变量的垃圾结果。

问题是您使用了错误的类型变量。您正在从文件中读取一个字节,但您正在将其读入一个 int 变量,这是多个字节。因此,这将文件中的单个字节与恰好位于变量初始值中的任何随机数据组合在一起。

将它们声明为 char 而不是 int

#include <stdio.h>

int main()
{
char i,j;
FILE *f;
f=fopen("sth.bmp","rb");
fread(&i,1, 1, f);
printf("%d ",i);
fread(&j,1, 1, f);
printf("%d\n",j);

return 0;
}

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

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