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));
}
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:
<br>std::vector<char> Sbuf;</li></ul> <p>Sbuf.push_back(someChar);<br>
<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:
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!