c puffer

iceman1888

Neuling
Thread Starter
Mitglied seit
06.09.2009
Beiträge
66
Ort
Kiel
moin leute ich komm mit folgender aufgabe nicht klar vllt kann mir hier ja jemand weiter??

Sie haben die Aufgabe eine Funktion zu schreiben, die den Inhalt einer Struktur in einen Puffer kopiert, aber nur wenn genügend Platz im Puffer verfügbar ist. Sie schreiben folgenden Code:

Code:
void copy_data(struct data_t *val, void *buf, int maxbytes)
{
    if (maxbytes - sizeof(*val) >= 0)
        memcpy(buf, val, sizeof(*val));
}

Dabei ist struct data_t eine beliebige Datenstruktur. Die Funktion sizeof bestimmt die Anzahl an Bytes, die ihr Argument im Speicher belegt. Die Funktion memcpy(void *dest, const void *src, size_t n) kopiert n Bytes von src nach dest und ist in string.h definiert.

Sie testen den Code sorgfältig und stellen fest, dass er immer den Inhalt von val in den Puffer buf kopiert, sogar wenn maxbytes zu klein ist.

(a) Erklären Sie warum die Daten immer kopiert werden.

(b) Verändern Sie die Funktion, so dass sie korrekt funktioniert, d.h. sie kopiert den Inhalt von val nur dann, wenn maxbytes groß genug ist. Schreiben Sie zudem eine main Funktion, welche den Gebrauch von copy_data anhand einer von Ihnen gewählten Struktur struct data_t demonstriert.

danke schonmal im vorraus...

greetz iceman
 
Wenn Du diese Anzeige nicht sehen willst, registriere Dich und/oder logge Dich ein.
Es muss sizeof(data_t) heißen, nicht sizeof(*val). Den Rest findest du selbst heraus, oder? :)
 
Lord liegt falsch. Außerdem hast du keinen Lösungsansatz und willst deine Hausaufgaben
gemacht bekommen? :(

€:
Auch ärgere ich mich darüber dass ich treublöd deine Hausaufgabe in dem anderen Thread
für dich gemacht habe und nicht einmal eine Antwort kam. Wirklich sehr unfreundlich.
 
Zuletzt bearbeitet:
In der Tat, da lag ich falsch. Für mich sah das auf den ersten Blick nach etwas Anfängerpointerei aus. Dass es was mit den Datentypen zu tun hat, fiel mir erst später auf.
 
Hardwareluxx setzt keine externen Werbe- und Tracking-Cookies ein. Auf unserer Webseite finden Sie nur noch Cookies nach berechtigtem Interesse (Art. 6 Abs. 1 Satz 1 lit. f DSGVO) oder eigene funktionelle Cookies. Durch die Nutzung unserer Webseite erklären Sie sich damit einverstanden, dass wir diese Cookies setzen. Mehr Informationen und Möglichkeiten zur Einstellung unserer Cookies finden Sie in unserer Datenschutzerklärung.


Zurück
Oben Unten refresh