Я работаю над небольшим проектом на C, где мне нужно проанализировать двоичный файл недокументированного формата файла. Поскольку я довольно новичок в C, у меня есть два вопроса к более опытным программистам.
Первый кажется легким. Как извлечь все строки из двоичного файла и поместить их в массив? В основном я ищу простую реализацию программы strings на языке 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;
}
}
}
Спасибо за любые указатели. :)