Forum: PC-Programmierung array in C überschreiben


von Da Mo (Gast)


Lesenswert?

Wie kann man ein bestehendes array in C überschreiben?

Mit

array1[]=array2[];

ist es nicht möglich.

Vielen Dank!

von Karl H. (kbuchegg)


Lesenswert?

Do Ma schrieb:
> Wie kann man ein bestehendes array in C überschreiben?

C Buch lesen.

Arrays verhalten sich anders als andere Datentypen.

> array1[]=array2[];
>
> ist es nicht möglich.

Schleife drüber legen oder memcpy benutzen.
memcpy macht in den meisten Fällen auch nichts anderes als eine 
Schleife, kann aber systemspezifische Besonderheiten theoretisch 
ausnutzen, die den Vorgang bei manchen Basisdatentypen beschleunigen.

von Rufus Τ. F. (rufus) Benutzerseite


Lesenswert?

Durch Zuweisen der einzelnen Elemente. Eine direkte Arrayzuweisung 
existiert nicht.

Alternativ lässt sich memcpy verwenden, wenn denn das Zielarray 
mindestens so groß wie das Quellarray ist.

von Da Mo (Gast)


Lesenswert?

Das habe ich schon befürchtet.

Danke!

von Dennis H. (c-logic) Benutzerseite


Lesenswert?

array1 und array2 sind idealerweise nur 2 Zeiger bei denen der Compiler 
weiß welche Größe sie besitzen für die notwendige Zeigerarithmetik und 
das es sich um einen zusammenhängenden Speicher handelt.

array1[]=array2[]; ist nicht möglich.

Sollte es sich bei array1 um ein konstantes Array handeln
und memcpy mal außen vorgelassen würde :

int t;
for (t=0;t<(sizeof(array1)/sizeof(array1[0]));t++) array1[t]=array2[t];

Vorausgesetzt ist natürlich hierbei, daß array1 die Daten von array2 
größenmäßig aufnehmen kann. Es ist dem Compiler schlichtweg egal. 
(Bufferoverflow, wenns denn nicht so war)

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.
Lade...