Хорошо, в этом коде много неправильного.По крайней мере, вам необходимо следующее:
#include <sys/shm.h>
#include <stdio.h>
Вторая проблема заключается в том, что вы вообще не инициализируете um или evernote.Это означает, что, например, evernote[0]->n
будет содержать данные для мусора.Поэтому, по крайней мере, у вас должно быть, например,
um.n = 1;
Теперь возникает проблема копирования um в сегмент общей памяти.Вам необходимо скопировать содержимое памяти, определенной структурой um, в массив evernota.Для этого:
memcpy(&evernota[0], &um, sizeof(struct nota));
memcpy(&evernota[20],&um,sizeof(struct nota));
Примечание: memcpy
определено в string.h
.
Теперь, наконец, для печати содержимого поля n
в evernota[0]
вам нужноиспользуйте только оператор точки, то есть
printf("o meu int é %d\n",evernota[20].n);
Я думаю, это все.
РЕДАКТИРОВАТЬ: код ниже все еще дает вам segfaults?