【发布时间】:2018-06-18 14:32:58
【问题描述】:
我正在尝试读取包含随机句子、数据和十六进制块的文件。我只想阅读十六进制块。下面是该文件的一个简短示例。
小样本文件
Serial Number : 1234
More Data : 7-9-2
-------------------------
Mak: A5 12 00 24 00 01 22 00 4F 11
A2 48 4A D1 53 6D 8A D1 61 40
t+00:00:00:00 : Mix one
Mak: A5 22 30 44 50 01 22 00 4F 11
A2 18 2A 31 43 6D 8A D1 61 40
A random sentence.
下面是我用来读取文件中所有行的内容,并经常添加strstr() 方法来匹配我正在寻找的特定十六进制值。如果我可以去掉所有不是十六进制块格式的东西,或者只将十六进制读入流中,那么匹配十六进制的整个过程会容易得多。
void ReturnAllLines(char *filePath)
{
char currentLine[100];
FILE *file = fopen(filePath, "r");
while(fgets(currentLine, sizeof(currentLine), file) != NULL)
{
printf(currentLine);
}
}
在其他语言中,我使用正则表达式或内置方法做过类似的事情,但我是 c 新手,我不确定最好的方法是什么。
理想情况下,最终输出类似于以下内容:
A5 12 00 24 00 01 22 00 4F 11 A2 48 4A D1 53 6D 8A D1 61 40
A5 22 30 44 50 01 22 00 4F 11 A2 18 2A 31 43 6D 8A D1 61 40
每个块都有一些东西可以区分两者。但即使是一条巨大的十六进制线也会更好。我曾考虑使用sscanf(),但我尝试过的一切都失败了,我放弃了尝试,因为我不确定它是否能够做到这一点。
【问题讨论】:
-
你真的想加入
S5- 还是打错字? -
S5对该输入意味着什么 -
编辑了
S5,因此它不会触发未来的十六进制阅读器。我正在努力赶上 :) -
好的,可能还想修正“...最终输出...”部分中的错字。
-
顺便说一下函数建议是C函数。