Я копирую данные конфигурации из структуры в буфер массива символов. Данные успешно скопированы, но проблема в том, что значение null также копируется из структур из-за размера. Как я могу получить данные без null.
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define MAX_DEVICE 5
#define MAX_CONF_PORT 3
typedef struct
{
unsigned char id[6];
unsigned char domain[32];
unsigned char ports[MAX_CONF_PORT][5];
}DEV_CONF_DATA;
#define SIZE_OF_DEV_CONF_DATA sizeof(DEV_CONF_DATA)
typedef union {
DEV_CONF_DATA data;
unsigned char bytes[SIZE_OF_DEV_CONF_DATA];
}DEV_CONF_BUFF;
typedef struct {
DEV_CONF_BUFF conf[MAX_DEVICE];
}DEVICE;
int main()
{
int i = 0;
DEVICE device;
unsigned char tx_buff[1024];
unsigned char *dest_ptr = tx_buff;
device.conf[0].data= (DEV_CONF_DATA) {"ABC,","embed-service.net,","8111,","8112,",","};
device.conf[1].data= (DEV_CONF_DATA) {"XYZ,","embed-service.net,","7111,","7112,",","};
memcpy(dest_ptr,device.conf[0].bytes,SIZE_OF_DEV_CONF_DATA);
dest_ptr += SIZE_OF_DEV_CONF_DATA;
memcpy(dest_ptr,device.conf[1].bytes,SIZE_OF_DEV_CONF_DATA);
dest_ptr += SIZE_OF_DEV_CONF_DATA;
for(i=0;i<SIZE_OF_DEV_CONF_DATA;i++)
if( tx_buff[i] == 0)
printf("%s", " null ");
else
printf("%c", tx_buff[i]);
printf("\n\n\n");
for(i=SIZE_OF_DEV_CONF_DATA;i<SIZE_OF_DEV_CONF_DATA*2;i++)
if( tx_buff[i] == 0)
printf("%s", " null ");
else
printf("%c", tx_buff[i]);
}
Это мой результат:
AB C, null null embed-service. net, null null null null null null null null null null null null null null 8111,8112 ,, null null null null
XYZ, null null embed-service. net, null null null null null null null null null null null null null 7111,7112 ,, null null null null
Мне нужны аккуратные чистые данные в таком буфере,
AB C, embed-сервис. net, 8111,8112`` XYZ, embed-service. net, 7111,7112``