我有一个看起来像这样的结构:
struct data {
int code;
char name[25], fnum[8];
};
然后我尝试将它用作这样的共享内存:
int dataSID = shmget(100002, sizeof(struct data), IPC_CREAT | 0666);
并按照以下方式附上:
struct data *com = shmat(dataSID, 0, 0);
最后我尝试填写像这样的值:
(*com).code = 1;
scanf("%s", (*com).name);
我在scanf
上获得了细分错误。
我做错了什么?
shmat
是否为结构正确分配了内存?
答案 0 :(得分:1)
对于字符数组,您始终可以使用 strcpy()或 strncpy()。其中建议使用strncpy(),这有助于避免缓冲区溢出。