You can't just cast a char to a char *, it doesn't work like that.
How you accomplish this task depends on how you defined your struct.
Code:
If you allocated a fixed amount of space for the value, like this:
struct node {
...
char value[10];
...
}
Then you can store single character into the value by doing this:
child->value[0] = val;
child->value[1] = '\0';
If instead the struct contains a char *, like this:
struct node {
...
char *value;
...
}
Then you would have to dynamically allocate some space before you stored the new value there:
child->value = malloc(2 * sizeof(char));
child->value[0] = val;
child->value[1] = '\0';
Notice how I made sure to add the trailing null-terminator onto the end of the value each time. This really is optional. But if you want to make sure that value contains a valid C string capable of being passed to functions like strlen(), then you must always make sure it is properly null terminated.