我正在使用 C 语言与客户端服务器进行某种“餐厅”实现。
我正在尝试通过 FIFO 发送以下结构:
typedef struct {
int numtable; //table number to send answer
char timestamp[20]; //simple timestamp
int order[MENUSZ]; //array of int with dish IDs
} request;
关于这个结构,我基本上将表号发送到服务器,通过模板、时间戳“构建”客户端 FIFO 名称,而 order 是一个简单的数组,其中填充了随机选择的整数,以“创建”一种随机菜单请求。
通过这个设置,我没有遇到问题,使用
write(server_fd, &request, sizeof(request))
当我想转换指针中的数组顺序 [MENUSZ] 以创建动态数组时,我遇到了问题,如下所示:
typedef struct {
int numtable;
char timestamp[20];
int *order;
} request;
更改结构后,我使用 malloc 函数为数组分配足够的空间:
request->order = malloc(sizeof(int)*numclients+1);
数组已正确填充,但由于某种原因,在我添加此指针后,服务器无法从 FIFO 中读取数据,方法是
read(server_fd, &request, sizeof(request));
我不明白为什么它不适用于该指针。难道我做错了什么?