Como te han dicho, en el núcleo de C, si no inicializas un arreglo, después tendrías que darle un valor a cada elemento. Diciendo esto, en las librerías de C existe una función llamada strncpy declarada en string.h que te permite copiar byte a byte una cadena a otra de una forma muy cómoda. Ejemplo:
#include <string.h>
#include <stdio.h>
int main() {
char arreglo[20];
strncpy(arreglo
, "Cadena de ejemplo", 20);
return 0;
}
NOTA: El ejemplo que has dado
palabra[20]={'H',' ','o'}
no es válido pues las llaves indicando cada elemento solo vale para
inicializar, es decir, no puedes asignarle valores a los elementos del arreglo fuera de la inizialización con las llaves.