Heim >Backend-Entwicklung >C++ >Wie kann ich in C Arrays mit dynamischer Größe erstellen, um Dateien unbekannter Größe zu verarbeiten?

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

Barbara Streisand
Barbara StreisandOriginal
2024-11-14 20:59:021031Durchsuche

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>FILE* 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>
<pre class="brush:php;toolbar:false">n = fread(Sbuf, sizeof(char), siz, picture);
// do stuff with the buffer
// memset(Sbuf, 0, sizeof(Sbuf));

}

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 geöffnet und ihre Größe bestimmt wird. 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 ein dynamisches Array zu erstellen.
    <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 Speicherlecks zu vermeiden.
      • Arithmetische Operationen können nicht direkt am 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 C nicht unterstützt werden stehen mehrere alternative Ansätze zum Erstellen dynamischer Arrays zur Verfügung, 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!

Stellungnahme:
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