Forum: PC-Programmierung memcpy array mit offset auffüllen


von tim (Gast)


Lesenswert?

Hallo,
ich habe ein array (128 bytes), wo die ersten 20 Elemente mit werten 
belegt sind. Alle anderen möchte ich mit 0xFF auffüllen.
1
uint8 buffer[108] = {0xFF};
2
memcpy(&array[20], buffer, sizeof(buffer));
Doch nur array[20] wird mit 0xFF beschrieben. Was ist hier falsch?

von Fabian (Gast)


Lesenswert?

Sehr merkwürdig, was Du da vor hast. Wieso nicht memset?
1
memset(&array[20], 0xFF, sizeof(array) - 20);

von Bernd K. (prof7bit)


Lesenswert?

tim schrieb:
> uint8 buffer[108] = {0xFF};

Das geht nicht, das fügt 0xff nur einmal ein. Das einzige das Du im 
Initializer abkürzen kannst ist das ganze mit 0 zu füllen.

Ich würde wie schon vorgeschlagen memset() nehmen.

: Bearbeitet durch User
Beitrag #5853946 wurde vom Autor gelöscht.
von Kaj (Gast)


Lesenswert?

1
uint8 buffer[108] = {[0 ... 19] = 0x00, [20 ... 107] = 0xFF};
Ist aber kein ISO-C.

von Rolf M. (rmagnus)


Lesenswert?

tim schrieb:
> Doch nur array[20] wird mit 0xFF beschrieben. Was ist hier falsch?

Du hast nur das erste Element von buffer initialisiert, das heißt, es 
gibt genau ein Element, wo 0xFF drin steht. Der Rest wird automatisch 
mit 0 initialisiert, weil nix explizit angegeben ist.

: Bearbeitet durch User
von Rufus Τ. F. (rufus) Benutzerseite


Lesenswert?

tim schrieb:
> Alle anderen möchte ich mit 0xFF auffüllen.

Du könntest Dir die Funktion memset ansehen.

von MaWin (Gast)


Lesenswert?

Rufus Τ. F. schrieb:
> Du könntest Dir die Funktion memset ansehen.

Zum Glück steht das nicht bereits in der ersten Antwort.

von Rufus Τ. F. (rufus) Benutzerseite


Lesenswert?

Steter Tropfen und so, lieber Fake-"MaWin".

von Johann L. (gjlayde) Benutzerseite


Lesenswert?

Fabian schrieb:
> Sehr merkwürdig, was Du da vor hast. Wieso nicht memset?
1
> memset(&array[20], 0xFF, sizeof(array) - 20);

Dann aber
1
memset(&array[20], 0xFF, sizeof(array) - 20 * sizeof(int));

Falls array nicht als Array gegeben ist sondern nur als Zeiger, dann 
liefert sizeof(array) natürlich nicht das gewünschte; in dem Fall geht 
z.B.:
1
memset(&array[20], 0xFF, (108 - 20) * sizeof(array[0]));

von MaWin (Gast)


Lesenswert?

Rufus Τ. F. schrieb:
> Steter Tropfen und so

Ist das jetzt der offizielle Freischein zum Spammen?

von MaWin (Gast)


Lesenswert?

Johann L. schrieb:
> Dann aber
> memset(&array[20], 0xFF, sizeof(array) - 20 * sizeof(int));

Unfug.

Beitrag #5854961 wurde vom Autor gelöscht.
von Johann L. (gjlayde) Benutzerseite


Lesenswert?

MaWin schrieb:
> Johann L. schrieb:
>> Dann aber
>> memset(&array[20], 0xFF, sizeof(array) - 20 * sizeof(int));
>
> Unfug.

Ah, korrekt. array ist uint8_t.

von Rolf M. (rmagnus)


Lesenswert?

Außerdem ist das Array nicht 108 Bytes groß, sondern 128.

von Rufus Τ. F. (rufus) Benutzerseite


Lesenswert?

MaWin schrieb:
> Ist das jetzt der offizielle Freischein zum Spammen?

Lieber Fake-"MaWin", Du solltest nochmal nachlesen, was Spam ist.

von MaWin (Gast)


Lesenswert?

Rufus Τ. F. schrieb:
> Lieber Fake-"MaWin", Du solltest nochmal nachlesen, was Spam ist.

Ist schon kompliziert, einen Fehler zuzugeben. Gelle, lieber Moderator? 
Das einzige, was noch geht, sind unnötige persönliche Anriffe.

von Egon O. (Gast)


Lesenswert?

MaWin schrieb:
> Ist schon kompliziert, einen Fehler zuzugeben.

Finger --> eigene Nase

von MaWin (Gast)


Lesenswert?

Egon O. schrieb:
>> Ist schon kompliziert, einen Fehler zuzugeben.
>
> Finger --> eigene Nase

Ich lerne gerne aus Fehlern.
Wo war mein Fehler noch gleich?

von Rolf M. (rmagnus)


Lesenswert?

MaWin schrieb:
> Wo war mein Fehler noch gleich?

Hauptsächlich darin, dass du nichts zum Thema beigetragen und nur 
gestänkert hast.

von MaWin (Gast)


Lesenswert?

Rolf M. schrieb:
> dass du nichts zum Thema beigetragen

Ach nein?
Auf einen technischen Fehler hinweisen ist kein Beitrag?
Auf sinnloses Gespamme hinweisen ist kein Beitrag?

von Egon O. (Gast)


Lesenswert?

MaWin schrieb:
> Wo war mein Fehler noch gleich?

Unter anderem, daß du den Begriff "Spam" mißbrauchst.
Du scheinst wirklich nicht zu wissen, was das eigentlich ist (wie es 
weiter oben schon gesagt wurde).

von MaWin (Gast)


Lesenswert?

Egon O. schrieb:
> Unter anderem, daß du den Begriff "Spam" mißbrauchst.

Achso.
Eine Information in einen Thread zu rotzen, die im ersten(!) Post schon 
gegeben wurde, ist kein Spam.
Ok, dann sehe ich meinen Fehler ein.

von Rolf M. (rmagnus)


Lesenswert?

MaWin schrieb:
> Rolf M. schrieb:
>> dass du nichts zum Thema beigetragen
>
> Ach nein?
> Auf einen technischen Fehler hinweisen ist kein Beitrag?

Ein "Beitrag" der einzig aus dem Wort "Unfug" besteht, ist wertlos und 
zeugt von einem Mangel an Benehmen.

> Auf sinnloses Gespamme hinweisen ist kein Beitrag?

Du scheinst dich zu weigern, dich darüber zu informieren, was Spam ist.

von MaWin (Gast)


Lesenswert?

Rolf M. schrieb:
> Ein "Beitrag" der einzig aus dem Wort "Unfug" besteht, ist wertlos

Es ist wertlos, wenn ich Unfug als Unfug identifiziere? Interessant.

> Du scheinst dich zu weigern, dich darüber zu informieren, was Spam ist.

Ja, bewirb dich bei Duden.de. Die Definition von Spam interessiert 
niemanden.
Fakt ist, dass der Beitrag völlig redundant 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.