Credo che il motivo sia che scrivere

switch(variabile)
{
case valore1:
printf("esempio");
break;
.......


equivalga a

if (varibile==valore1) printf("esempio")

e per le stringhe (o meglio per gli array di caratteri) non può essere fatto un confronto con "==" bisogna usare delle aposite funzioni di libreria o crearsi delle funzioni ad hoc. Corregetemi se sbaglio