我正在尝试使用 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/