iceman1888
Neuling
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:
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
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