在C中将struct转换为char数组

时间:2017-11-14 13:14:40

标签: c pointers networking

我有以下结构,我需要通过网络发送。

typedef struct {
    u_int16_t dataSize;
    u_int16_t *positions;
    char *dataLoad;
} TransferData

position和dataLoad变量可以包含任意数量的整数和字符。

我试过这个,

TransferData m;

//adding data to the structure
size_t len = snprintf(NULL, len, "%p, %d, %s", m.positions, m.dataSize, m.dataLoad);
char *apstr = calloc(1, sizeof *apstr * len + 1);
if (!apstr) {
    fprintf(stderr, "%s() error: virtual memory allocation failed.\n", __func__);
}

if (snprintf(apstr, len + 1, "%p,%d,%s",m.positions,m.dataSize,m.dataLoad) > len + 1) {
    fprintf(stderr, "%s() error: snprintf returned truncated result.\n", __func__);

}

代码适用于char *和u_int16_t,但不适用于u_int16_t *。是否有任何方法可以将此结构转换为char数组?

0 个答案:

没有答案