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
clist[0].data[0] = "hola";
¿O una cadena de 20 caracteres? Si era esto ultimo:
Código
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
clist[0].data[sizeof(clist[0].data) - 1] = 0;