So überspringen Sie eine Datei in der TAR-Datei, um eine bestimmte Datei abzurufen

Ich versuche, den Inhalt einer HTML-Datei zu erhalten, die in der TAR-Datei vorhanden ist (ich verwende Visual C ++, um meine Aufgabe zu erfüllen). Mein Ansatz ist es, den Teer in einem Puffer unter Verwendung eines Streams zu speichern und dann den Inhalt von HTML in einem anderen Puffer zu speichern. Dann verwende ich einen Puffer, der zum Dateinamen jeder Datei in der Teer-Datei im Speicherort-Puffer [0-100] wechselt (zu diesem Zeitpunkt) Speicherort haben wir den Dateinamen) und speichern den Dateinamen in "Inhalt" (in meinem Fall) und suchen, ob es die Datei extension.html hat?

Wenn der Name der Datei .html enthält, speichern Sie den Inhalt aus dem Speicherortpuffer [PreviousFileSizes +512] (mit PreviousFileSizes meine ich, dass es vor dieser HTML-Datei einige Dateien gab, also müssen wir ihre Größe in den Pufferindex aufnehmen, um zu gehen an den richtigen Ort - ich meine, ich gehe nicht davon aus, dass die erste Datei in der TAR-Datei eine HTML-Datei ist. In meinem Code bezeichne ich diese PreviousFileSizes mit "skip" - das bedeutet, dass so viel Größe zu überspringen ist, um zu unserer HTML-Datei zu gelangen.

mein Code, um es zu erreichen, ist-

int skip=0;
            char contents [100];
            //char test[1000];
            do
            {

                    int SizeOfFile = CreateOctalToInteger(&buffer[skip+124],11);
                    size_t distance= ((SizeOfFile%512) ? SizeOfFile + 512 - (SizeOfFile%512) : SizeOfFile );
                    size_t skip= distance +512;
                    memcpy(contents,&buffer[skip],100);




            }
            while(strstr(contents,".html") != NULL);

gehe ich richtig? Bitte korrigieren Sie mich, wenn etwas in meiner Logik nicht stimmt?

Antworten auf die Frage(2)

Ihre Antwort auf die Frage