cmdBuf 和 returnValue必须为char *
时间: 2024-04-12 17:29:19 浏览: 20
如果结构体中的 `cmdBuf` 和 `returnValue` 必须为 `char *` 类型,那么在接收结构体之前,你需要为这两个成员变量分配足够的内存空间,并确保接收到的数据正确地存储在内存中。下面是修改后的代码示例:
```c
enum Choose {
TcpHeartbeat = 200,
TcpExeCmd
};
// 定义结构体
struct DataPacket {
int clientSockfd;
enum Choose choose;
char *cmdBuf;
char *returnValue;
};
// 分配内存空间
struct DataPacket ReceivePackets;
ReceivePackets.cmdBuf = malloc(256); // 假设最大长度为256
ReceivePackets.returnValue = malloc(256); // 假设最大长度为256
memset(&ReceivePackets, 0, sizeof(ReceivePackets));
recv(clientSocket, &ReceivePackets, sizeof(ReceivePackets), 0);
// 使用接收到的数据
printf("Received cmdBuf: %s\n", ReceivePackets.cmdBuf);
printf("Received returnValue: %s\n", ReceivePackets.returnValue);
// 释放内存空间
free(ReceivePackets.cmdBuf);
free(ReceivePackets.returnValue);
```
在这个修改后的代码中,我使用 `malloc()` 函数为 `cmdBuf` 和 `returnValue` 成员变量分配了足够的内存空间(假设最大长度为256)。在使用完接收到的数据后,记得使用 `free()` 函数释放分配的内存空间,以避免内存泄漏问题。