Hola,
En principio si haces:
void fun(char *cadena){
//Aqui trabajas con la cadena
}
debería funcionar sin problemas.
El error que comentas acerca de char y char*, debes haber cometido un error en la declaración de las variables o en la declaración de los argumentos de la función, fijarse que siempre este declarada como char *.
Si lo que quieres es que la función retorne una cadena de caracteres
char *fun(char *cadena){
//Aqui va el codigo
return(cadena);
}
Tenes que fijarte que la cadena que devolves este definida fuera de la función para estar seguro que ser reservo espacio para almacenar la cadena.