Anhängen in ein array in C
Ich habe ein array mit einer bestimmten Größe, ohne memory-allocation, wie Sie Anhängen, etwas mit hinein?
Sagen, dass ich den code ausführen, wird sein warten auf etwas, das Sie eingeben möchten, geben Sie "bond"
, wie ich anfügen, diese in ein array ? [10] ?
Arrays können nicht ändern die Größe.
Wenn Sie wollen einfach nur den Wert zuzuweisen, der an eine bestimmte Stelle im array finden Sie unter: stackoverflow.com/questions/1088622/...
einfach Eine[10] = "bond"; angenommen, der array wurde als ein string
Wie andere gesagt haben, wenn das array mit fester Größe, sondern hat Raum für weitere Elemente, die Sie benötigen, zu verfolgen, das Letzte Element, entweder mit einem Zähler oder eine sentry (z.B. ein
Sie können auch nehmen einen Blick auf diese. [stackoverflow.com/questions/5406935/...
Wenn Sie wollen einfach nur den Wert zuzuweisen, der an eine bestimmte Stelle im array finden Sie unter: stackoverflow.com/questions/1088622/...
einfach Eine[10] = "bond"; angenommen, der array wurde als ein string
Wie andere gesagt haben, wenn das array mit fester Größe, sondern hat Raum für weitere Elemente, die Sie benötigen, zu verfolgen, das Letzte Element, entweder mit einem Zähler oder eine sentry (z.B. ein
'\0'
für Streicher NULL
etc.), dann update der counter/sentry und legen Sie das Element.Sie können auch nehmen einen Blick auf diese. [stackoverflow.com/questions/5406935/...
InformationsquelleAutor dave_1234 | 2015-04-17
Du musst angemeldet sein, um einen Kommentar abzugeben.
Wenn das array deklariert wie
dann können Sie zuweisen Zeichenkette "bond", um es auf die folgende Weise
Wenn Sie möchten, fügen Sie den array durch eine andere Zeichenfolge dann schreiben Sie
InformationsquelleAutor Vlad from Moscow
Kann man nicht Anhängen, um ein array. Bei der Definition der array-variable, C fragt, der ist für genügend zusammenhängenden Speicher. Das ist alles, die Speicher, den Sie jemals bekommen. Sie können ändern Sie die Elemente des Arrays (A[10]=5), nicht aber die Größe.
Allerdings KÖNNEN Sie erstellen Datenstrukturen, die es ermöglichen, Anhängen. Die zwei häufigsten sind die verlinkten Listen und dynamische arrays. Beachten Sie, diese werden nicht gebaut, die in die Sprache. Sie implementieren müssen, um Sie selbst oder nutzen Sie die Bibliothek. Die Listen und arrays von Python, Ruby und JavaScript implementiert sind, werden als dynamische arrays.
LearnCThHardWay hat ein ziemlich gutes tutorial auf verlinkten Listen, obwohl die ein auf dynamische arrays ist ein wenig rau.
InformationsquelleAutor Nick Bailey
Hi,
Es hängt wirklich davon ab, was du damit meinst anfügen.
Hier das problem sein kann, zwei Dinge :
Dies ist die einfachste Lösung, die ich denken konnte. Es ist wahrscheinlich nicht die beste, aber ich wollte nur zeigen Ihnen den gesamten Prozess. Ich hätte den C-standard-Bibliothek
strdup(char *str)
Funktion erstellen Sie eine neue Zeichenfolge, und könnte umgesetzt haben, meine eigene kurze Liste oder ein array ist.InformationsquelleAutor Naliwe
Die Größe einer array-Variablen nicht ändern kann. Der einzige Weg zum Anhängen an ein array nutzen Speicher-Allokation. Sie sind auf der Suche für die
realloc()
Funktion.Zu denen sage ich, dass es nicht getan werden kann (beachten Sie meine Formulierung "array-Variablen"). Ich gehen dann zu erklären, wie es getan werden kann, ist durch die Veränderung der Voraussetzungen. Bitte Lesen Sie meine Antwort vor indem es Sie als falsch.
Er sagte: "ohne memory allocation", also denke ich, das bedeutet, dass keine
realloc
. Meine einzige Vermutung ist, dass er hat eine Feste ein und soll freien Raum.Tatsächlich, ich denke, er hat ein leeres array mit fester Größe und will einfach fügen Sie Wert auf eine bestimmte position.
Wieder, wie es scheint, du hast nicht gelesen, mein Kommentar entweder: In dem ersten Satz meiner Antwort erkläre ich, dass das, was OP will nicht getan werden kann. Dann erkläre ich, wie die Frage beantwortet werden kann, durch die Veränderung der Frage zu Zwängen. Ja, die OP nicht möchte Speicherzuweisung, aber der Grund dafür ist wahrscheinlich, dass die OP mit der Angst, es zu benutzen, nicht, dass es die falsche Sache zu verwenden.
InformationsquelleAutor fuz