Я пытаюсь получить html-файл, который является одним из файлов, расположенных внутри файла tar, и у меня есть что-то в виду, я не знаю его правильного или не ?? пожалуйста, укажите мне, если я ошибаюсь. Моя идея:пытается получить содержимое html-файла, находящегося внутри файла tar
Я создаю поток из tar-файла и сохраняю этот поток в буфере, чтобы его содержимое затем использовало команду strstr для поиска файла html внутри файла tar (так как я знаю, что в моем файле tar html содержимое начинается с «<! doctype html» и заканчивается на < «/ html>», поэтому я загружу содержимое между ними, которое является файлом html). Мой подход подходит?
Проблема заключается в том, что я делаю очень большой размер для буфера (но меньший размер файла tar, который содержит html + много других файлов), он дает стек над потоком при отладке. но когда я даю небольшой индекс, тогда он показывает содержимое какого-либо другого файла, который находится в начале, если я открываю файл tar в блокноте (я проверил, открыв файл tar в блокноте, это содержимое действительно присутствует в файле tar, но в начале файла tar, поэтому, когда я увеличил индекс буфера, чтобы получить доступ к html-файлу, который находится в середине файла (который на самом деле требует очень большого индекса), он дает stackoverflow при отладке). Мой код
это- HRESULT AMEPreviewHandler:: CreateHtmlPreview(IStream *m_pStream) //this function is called from
// somewhere
ULONG CbRead;
const int Size= 115000 ;
char Buffer[Size+1];
(m_pStream)->Read(Buffer, Size, &CbRead);
Buffer[CbRead ] = L'\0';
char *compare= "<!doctype html"; //this we have to search in tar file
// content because the html file contents starts from here
char * StartPosition;
StartPosition = strstr (Buffer,compare); //StartPosition gives Bad
// pointer when Size is small on debugging at this small size i can see some contents in buffer which i
//can find in tar file at starting
__int64 count=0;
while (StartPosition!=NULL)
{
MessageBox(m_hwndPreview,L"hurr inside the while loop",L"BTN WND",MB_ICONINFORMATION);
count=StartPosition-Buffer+1; //to get the location of
//"<!doctype html";
}
MessageBox(m_hwndPreview,L"wafter the while loop in CreateHtmlPreview ",L"BTN WND",MB_ICONINFORMATION);
return true;
}
Пожалуйста, скажите мой подход, чтобы получить содержимое файла из HTML-файла в файл деготь правильно ?? и почему он дает переполнение стека, когда я даю большой индекс для буфера, чтобы получить доступ к содержимому буфера, которые лежат в середине файла tar? Даже размер объявления i меньше, чем размер tar-файла, если я вижу вручную?