You've declared random as a char, which is a single byte integral value. You're assigning to it an element from the words array, and each of those elements is of type char*. Hence, you are getting an error about trying to assign a char* to an integer value.
You meant to declare randomas a char*.
Other things I'll point out about your code:
void pick() {
char* words[2]; // 1
words[0] = "blah";
words[1] = "hmm";
char random; // 2
srand(time(NULL));
random = words[rand() % 2]; // 3
printf(random); // 4
return;
}
This should be declared as an array of const char* since you're assigning string literals (which are immutable) to it.
random also should be declared as const char*.
Using % to get random numbers in a specific range traditionally is not very good. Also see Q13.16 How can I get random integers in a certain range? from the comp.lang.c FAQ.
printf(random) is dangerous. If the string you're printing happens to include % characters, then printf will misbehave (and this potentially could be a security vulnerability). You always should prefer printf("%s", random). And since you probably want a trailing newline, it ought to be printf("%s\n", random) or just puts(random).