mikrocontroller.net

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


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

Bewertung
0 lesenswert
nicht 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.
uint8 buffer[108] = {0xFF};
memcpy(&array[20], buffer, sizeof(buffer));
Doch nur array[20] wird mit 0xFF beschrieben. Was ist hier falsch?

Autor: Fabian (Gast)
Datum:

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

Autor: Bernd K. (prof7bit)
Datum:

Bewertung
1 lesenswert
nicht 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.
Autor: Kaj (Gast)
Datum:

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

Autor: Rolf M. (rmagnus)
Datum:

Bewertung
0 lesenswert
nicht 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
Autor: Rufus Τ. F. (rufus) (Moderator) Benutzerseite
Datum:

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

Du könntest Dir die Funktion memset ansehen.

Autor: MaWin (Gast)
Datum:

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

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

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

Bewertung
0 lesenswert
nicht lesenswert
Steter Tropfen und so, lieber Fake-"MaWin".

Autor: Johann L. (gjlayde) Benutzerseite
Datum:

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

Dann aber
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.:
memset(&array[20], 0xFF, (108 - 20) * sizeof(array[0]));

Autor: MaWin (Gast)
Datum:

Bewertung
-1 lesenswert
nicht lesenswert
Rufus Τ. F. schrieb:
> Steter Tropfen und so

Ist das jetzt der offizielle Freischein zum Spammen?

Autor: MaWin (Gast)
Datum:

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

Unfug.

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

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

Ah, korrekt. array ist uint8_t.

Autor: Rolf M. (rmagnus)
Datum:

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

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

Bewertung
0 lesenswert
nicht lesenswert
MaWin schrieb:
> Ist das jetzt der offizielle Freischein zum Spammen?

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

Autor: MaWin (Gast)
Datum:

Bewertung
-2 lesenswert
nicht 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.

Autor: Egon O. (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
MaWin schrieb:
> Ist schon kompliziert, einen Fehler zuzugeben.

Finger --> eigene Nase

Autor: MaWin (Gast)
Datum:

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

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

Autor: Rolf M. (rmagnus)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
MaWin schrieb:
> Wo war mein Fehler noch gleich?

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

Autor: MaWin (Gast)
Datum:

Bewertung
-2 lesenswert
nicht 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?

Autor: Egon O. (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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).

Autor: MaWin (Gast)
Datum:

Bewertung
-2 lesenswert
nicht 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.

Autor: Rolf M. (rmagnus)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: MaWin (Gast)
Datum:

Bewertung
-3 lesenswert
nicht 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.

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.