Heim > Backend-Entwicklung > C++ > Hauptteil

Wie kann ich in C Arrays mit dynamischer Größe erstellen, um Dateien unbekannter Größe zu verarbeiten?

Barbara Streisand
Freigeben: 2024-11-14 20:59:02
Original
962 Leute haben es durchsucht

How Can I Create Dynamically Sized Arrays in C to Handle Files of Unknown Size?

Arrays mit dynamischer Größe in C-Sprache

Betrachten Sie den folgenden C-Code:

<br>int siz = 0;<br>int n = 0;<br>DATEI* picture;</p>
<p>picture = fopen("test.jpg", "r");<br>fseek(picture, 0, SEEK_END);<br>siz = ftell(picture);</p>
<p>char Sbuf[siz]; // Fehler: Array variabler Länge<br>fseek(picture, 0, SEEK_SET);<br>while (!feof(picture)) {</p>
<div class="code" style="position:relative; padding:0px; margin:0px;"><pre class="brush:php;toolbar:false">n = fread(Sbuf, sizeof(char), siz, picture);
// do stuff with the buffer
// memset(Sbuf, 0, sizeof(Sbuf));
Nach dem Login kopieren

}

In diesem Code besteht das Ziel darin, den Inhalt einer Datei in einen Puffer einzulesen, die Größe des Puffers ist jedoch unbekannt, bis die Datei verfügbar ist geöffnet und seine Größe bestimmt. Die Sprache C erlaubt jedoch nicht die Deklaration von Arrays mit variabler Länge.

Alternativen zu Arrays variabler Länge

Um dieses Problem zu beheben, gibt es mehrere Alternativen:

  • std::vector: Verwenden Sie die C Standard Template Library (STL), um eine zu erstellen dynamisches Array.
    <br>std::vector<char> Sbuf;</li></ul>
    <p>Sbuf.push_back(someChar);<br>

    • Dynamische Zuordnung: Verwenden Sie zum Zuweisen den neuen Operator Speicher zur Laufzeit für ein Array.
      <br>char* Sbuf = new char[siz];</li></ul>
      <p>delete [] Sbuf; // Speicher freigeben, wenn fertig<br>

      Überlegungen

      Die dynamische Zuweisung bietet zwar eine Möglichkeit, ein Array variabler Größe zu erstellen, ist aber mit dabei einige Einschränkungen:

      • Die Speicherzuweisung muss ordnungsgemäß verwaltet werden, um Speicher zu vermeiden Lecks.
      • Arithmetische Operationen können nicht direkt auf dem Index des Arrays ausgeführt werden, da es sich um einen Zeiger handelt.
      • Verschiedene Compiler können Arrays variabler Länge unterschiedlich implementieren, was zu Kompatibilitätsproblemen führt.

      Fazit

      Obwohl Arrays variabler Länge in nicht unterstützt werden C gibt es mehrere alternative Ansätze zum Erstellen dynamischer Arrays, die sich an die Größe der zu speichernden Daten anpassen können. Es ist wichtig, die am besten geeignete Option basierend auf den spezifischen Anforderungen und Einschränkungen des Projekts auszuwählen.

      Das obige ist der detaillierte Inhalt vonWie kann ich in C Arrays mit dynamischer Größe erstellen, um Dateien unbekannter Größe zu verarbeiten?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Empfehlungen
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage