El primer indice de un array es el 0.
Las cadenas no son unsigned y o la estructura tiene un puntero (por lo que apunta a memoria que reservas fuera de la misma) o tiene un array de caracteres de un tamaño fijo. En este caso declaraste 20 punteros a unsigned char. ¿Es eso lo que querias?
¿O una cadena de 20 caracteres? Si era esto ultimo:
Tenes que COPIAR la cadena, no asignarla. De esta manera un poco enrevesada se evitan problemas de buffer overflow (seguramente las cadenas de entrada no seran hola siempre ni tendran un tamaño fijo):
Las cadenas no son unsigned y o la estructura tiene un puntero (por lo que apunta a memoria que reservas fuera de la misma) o tiene un array de caracteres de un tamaño fijo. En este caso declaraste 20 punteros a unsigned char. ¿Es eso lo que querias?
Código (c++) [Seleccionar]
clist[0].data[0] = "hola";
¿O una cadena de 20 caracteres? Si era esto ultimo:
Código (c++) [Seleccionar]
char data[20];
Tenes que COPIAR la cadena, no asignarla. De esta manera un poco enrevesada se evitan problemas de buffer overflow (seguramente las cadenas de entrada no seran hola siempre ni tendran un tamaño fijo):
Código (c++) [Seleccionar]
strncpy(clist[0].data, "hola", sizeof(clist[0].data) - 1);
clist[0].data[sizeof(clist[0].data) - 1] = 0;