Entfernen Sie ein element aus einem char-array (C)
Ich versuche zu entfernen, einen char aus einem array und ich habe Probleme. Ich Lesen Sie, wie Sie es tun, mit zahlen, aber es scheint, unterscheidet sich vom entfernen von chars aus, da Sie nicht für mich arbeiten.
Wenn ich habe das folgende array:
char stuff[][20] = {"one", "two", "three", "four", "five"};
Wie kann ich Sie entfernen das element "vier" zum Beispiel, so kann ich
{"one", "two", "three", "five"};
- Lassen Sie den compiler zählen für Sie
char stuff [][20] = ...
- Wie machst du es mit ganzen zahlen? Es ist nicht viel anders mit strings (denken Sie daran, ein string ist ein array)
Du musst angemeldet sein, um einen Kommentar abzugeben.
Könnten Sie dies tun, indem Sie die dynamische Zuweisung, die alle benötigten Speicher: ein array von "char*" als auch als Speicher für die strings.
Dann könnten Sie erzeugen ein array, ohne das Element entfernt werden, und kopieren Sie alle Daten, bleibt. Endlich frei, das original-array und strings.
Es ist ein bisschen Komplex, aber nicht zu hart. Es kann einfacher sein, wenn Sie eine verlinkte Liste - aber das wird sich wahrscheinlich ändern Sie Ihre applikationslogik ein bisschen mehr.
Sind Sie gehen zu müssen, kopieren Sie die Saiten, und verfolgen, wie viele man bedenkt, anwesend zu sein, da Sie den zugewiesenen Platz selbst ist nicht Weg gehen.
Können Sie nicht ändern Sie die Größe eines Arrays in C; so erklärt, Ihre
stuff
array wird immer über den 5-Elementen (wobei jedes element ist ein 20-elementiges Feld vonchar
).Was Sie kann tun ist, kopieren Sie den Inhalt des fünften Elements, des vierten Elements:
dann leer aus das fünfte element:
oder
Entweder Weg, Ihr array enthält nun die Saiten
Wenn Sie wirklich wollen, ändern Sie die Anzahl der Elemente in der Liste (nicht nur klar aus dem letzten), müssen Sie eine andere Strategie.
Probleme, wie dies in der Regel rufen für eine Daten-Struktur, bekannt als eine Link-Liste; jedes element in der Liste explizit zeigt auf das nächste element. Sie können hinzufügen, entfernen und neu anordnen Elemente in einer verketteten Liste wesentlich einfacher, als Sie können in ein array (auch wenn ein array kann verwendet werden, als backing store). Es gibt eine Reihe von Beispielen (von unterschiedlicher Qualität) im Internet. Allerdings, wenn Sie finden eine Kopie von Sedgewick ' s "Algorithmen in C", das wäre eine bessere Ressource.