Forum: PC-Programmierung Inhalt vom Array austauschen


von Mark (Gast)


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?

von Kaj (Gast)


Lesenswert?

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

von Vlad T. (vlad_tepesch)


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
von Kaj (Gast)


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.

von Freiberufler (Gast)


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;
}

von M.K. B. (mkbit)


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.

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.