Wie verwenden von memcpy in Struct in c?
Habe ich ein struct:
struct points{
int i;
int x;
int y;
};
Ich habe einen array der struct, und es mit dem Namen temp. Dann habe ich eine andere und es mit dem Namen pt. Angenommen, ich habe einige Inhalte in temp. Wie kann ich kopieren Sie die Elemente von temp pt?
Hier ist mein code von memcpy und der compiler sagt, dass es einen segmentation fault. Hilfe bitte.
#define MAX_POINTS 400
struct points temp[MAX_POINTS];
/* Some code to input elements to array temp */
struct points pt[i]; /* array of struct with i elements*/
memcpy(&pt, &temp, sizeof (temp));
pt
undtemp
sind bereits Zeiger, wenn Sie nicht die array-Dereferenzierung. Entfernen Sie die&
in Ihrem memcpy. Segfault ist wahrscheinlich, weil die Adresse des ersten Elements des pt oder temp (cast als eine Ganzzahl) ist, die außerhalb Ihrer heap-Bereich.- Als ich versuchte, drucken Sie den Inhalt des pt.ich es korrekt gedruckt: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 Segmentation fault (core dumped), Aber wieder, wie wollen Sie loswerden der seg fault?
- Noch ist die seg fault ist es. Sollte ich malloc? Und wie sollte ich es verwenden?
- was ist Ihre definition von ich?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Müssen Sie vorsichtig sein, um nur kopieren Sie die Größe des kleineren der beiden, hier nehme ich an, dass
i < MAX_POINTS
Auch wie andere schon gesagt die
&
sind nicht korrekt. Sie müssen einen Zeiger auf das erste element, das ist&pt[0]
zum Beispiel, oder einfach nurpt
als array-Zerfälle zu&pt[0]
in diesem Zusammenhang.Beachten Sie, dass Ihre Zuordnung
pt
ist ein variabler Länge-array, wenni
ist eine variable. Dies kann gefährlich sein und führen zu einem stack-überlauf, wenni
ist immer zu groß. Also, wenn Sie planen, um die Verwendung großer arrays, die hier, der besseren Nutzungmalloc
:Dann leider, Sie können nicht
sizeof pt
für diememcpy
.