c - 如何使用 fscanf 解析二进制文件

标签 c file-io

我正在尝试使用 fscanf 来解析二进制文件(图像)。

这是文件的开头。我想获取文件的“宽度”和“高度”。本例中,宽为640,高为480

00000000: 5036 0a23 2043 7265 6174 6564 2062 7920  P6.# Created by 
00000010: 4972 6661 6e56 6965 770a 3634 3020 3438  IrfanView.640 48
00000020: 300a 3235 350a a079 35a0 7833 a179 349f  0.255..y5.x3.y4.

所以标题是'P'一些字符后跟0xa(换行符)然后是宽度然后是空格(0x20)然后是高度'

在我的代码中,我有

  t=fscanf(fin,"P%c\r%d %d",&fc,&w, &h);
  or 
  t=fscanf(fin,"P%c\n%d %d",&fc,&w, &h);

但是 t 总是返回 1(而不是 3)并且我的 w 和 h 没有被读取。

你能告诉我如何解决我的问题吗?

最佳答案

您需要跳过文本“# Created by...\n”。所以尝试:

t=fscanf(fin,"P%c\n%*[^\n] %d %d", &fc, &w, &h);

关于c - 如何使用 fscanf 解析二进制文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21194253/

相关文章:

无法将数组值带入函数

c - 来自发布的 MQTT 接收和 mqtt ping C

XSLT:将 base64 数据转换为图像文件

python - 随着时间的推移跟踪文件

java - 针对小文件优化Java的NIO

C语言中的CPU利用率

c - 链表初始化

c - 字符串比较逻辑错误

c# - 无法删除从 C# 应用程序启动的子进程中的文件

c - 简单文件处理C程序出错