我正在用 C 语言开发一个小项目,我必须解析一个未记录文件格式的二进制文件。由于我对 CI 很陌生,所以有两个问题要问一些更有经验的程序员。
第一个似乎很容易。如何从二进制文件中提取所有字符串并将它们放入数组中?基本上我正在寻找 C 中字符串程序的简单实现。
当我在任何文本编辑器中打开二进制文件时,我会得到很多垃圾,其中混入了一些可读的字符串。我可以在命令行中使用字符串提取这些字符串。现在我想在 C 中做类似的事情,就像下面的伪代码一样:
while (!EOF) {
if (string found) {
put it into array[i]
i++
}
return i;
}
第二个问题稍微复杂一些,我相信它是实现相同目标的正确方法。当我在 HEX 编辑器中查看文件时,很容易注意到一些模式。例如,在每个字符串之前有一个值为 02 (0x02) 的字节,后跟字符串的长度和字符串本身。例如 02 18 52 4F 4F 54 4B 69 57 69 4B 61 4B 69是字符串部分以粗体显示的字符串。
现在我试图创建的功能将像这样工作:
while(!EOF) {
for(i=0; i<buffer_size; ++i) {
if(buffer[i] hex value == 02) {
int n = read the next byte;
string = read the next n bytes as char;
put string into array;
}
}
}
感谢您的任何指示。:)