mikrocontroller.net

Forum: PC-Programmierung Inhalt vom Array austauschen


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: Mark (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Guten morgen,
ich habe ein kleines Problem, wo ich nicht genau weiß, wie ich das am 
einfachsten umsetzen kann (in C).

ich habe ein array, wo einige Werte in einem anderen Array definiert 
werden.
z.B.
A[] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10};
B[] = {6, 5, 4};

jetzt möchte ich gerne A[3] A[4] A[5] mit B[] tauschen. sodass
A[] = {1, 2, 3, 6, 5, 4, 7, 8, 9, 10};
herauskommt

doch mit memcpy bekomme ich ja nur den Array von anfang an 
überschreiben. Gibt es auch eine Möglichkeit einen Wertebereich 
vorzugeben?

Autor: Kaj (Gast)
Datum:

Bewertung
1 lesenswert
nicht lesenswert
memcpy(&A[3], B, sizeof(B));

Autor: Vlad T. (vlad_tepesch)
Datum:

Bewertung
1 lesenswert
nicht lesenswert
tauschen, heißt aber, dass danach in 𝐵 der alte Inhalt von 𝐴 stehen 
muss.

und memcopy funktioniert natürlich auch nur, wenn es ein 1:1 tausch/copy 
ist und nicht nicht ein splice, wo 𝑛 Elemente in 𝐴 durch 𝑚 Elemente aus 
𝐵 ersetzt werden

: Bearbeitet durch User
Autor: Kaj (Gast)
Datum:

Bewertung
-2 lesenswert
nicht lesenswert
Vlad T. schrieb:
> tauschen, heißt aber, dass danach in 𝐵 der alte Inhalt von 𝐴 stehen
> muss.
Nein, heisst es nicht. Wenn ein Bauteil defekt ist, muss man es tauschen 
(umgangssprachlich). Das heisst aber nicht, dass das defekte Bauteil (A) 
danach in der Kiste mit den funktionierenden Teilen (B) landet. Was du 
da machst ist Wortklauberei und voellig unnoetig. Der TO hat mit einem 
Beispiel gezeigt, was er will.

Autor: Freiberufler (Gast)
Datum:

Bewertung
-2 lesenswert
nicht lesenswert
A[] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10};
B[] = {6, 5, 4};

for (int i=3; i<=5; i++)
{
  type h;
  h= B[i]; B[i] = A[i]; A[i]= h;
}

Autor: M.K. B. (mkbit)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Freiberufler schrieb:
> A[] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10};
> B[] = {6, 5, 4};
>
> for (int i=3; i<=5; i++)
> {
>   type h;
>   h= B[i]; B[i] = A[i]; A[i]= h;
> }

Je nachdem, wie B genau angelegt wird, ist B[i] mit i>2 undefiniert, 
weil es außerhalb des Speicherbereichs für B liegt.

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
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.