www.mikrocontroller.net

Forum: PC-Programmierung array in C überschreiben


Important announcement: there is an English version of this forum on EmbDev.net. Posts you create there will be displayed on Mikrocontroller.net and EmbDev.net.
Autor: Da Mo (Gast)
Datum:

Diesen Beitrag bewerten:
lesenswert
nicht lesenswert
Wie kann man ein bestehendes array in C überschreiben?

Mit

array1[]=array2[];

ist es nicht möglich.

Vielen Dank!

Autor: Karl Heinz Buchegger (kbuchegg) (Moderator)
Datum:

Diesen Beitrag bewerten:
lesenswert
nicht 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.

Autor: Rufus Τ. Firefly (rufus) (Moderator) Benutzerseite
Datum:

Diesen Beitrag bewerten:
lesenswert
nicht 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.

Autor: Da Mo (Gast)
Datum:

Diesen Beitrag bewerten:
lesenswert
nicht lesenswert
Das habe ich schon befürchtet.

Danke!

Autor: Dennis Heynlein (c-logic)
Datum:

Diesen Beitrag bewerten:
lesenswert
nicht 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)

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel




Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder GIF-Format hochladen.
Siehe Bildformate
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken erkennst du die Nutzungsbedingungen an.

webmaster@mikrocontroller.netImpressumNutzungsbedingungenWerbung auf Mikrocontroller.net