Cucu, una funcion no devuelve un array, sino un puntero al mismo. Creo saber cual es el problema. Vos estas devolviendo un puntero q se llama "devuelto", pero es una variable local de la funcion, y se destruye al terminar la funcion. Podrias hacer 2 cosas:
1- Declaras "devuelto" como global.
2- A la funcion le pasas como parametro un puntero, y q la misma trabaje sobre eso.
Te dejo un ejemplo, a ver si anda (aviso, nunca trabaje con c18)
void devuelveArray(char *array)
{
for(i = 0; i< 4; i++)
*(array++) = '1';
}
void main (void)
{
char prueba[8];
devuelveArray(prueba);
}
espero q te funcione, adios!