Estás retornando un char, tienes que retornar un apuntador a la cadena de caracteres, además la cadena de caracteres esta declarada de forma tal que se perdería su valor al terminar la función, por lo que debería ser static, así:
Código:
char *leeString() {
static char cadena[40];
scanf("%s",&cadena);
return cadena;
}
En cuanto a:
Código:
Alumnos.Nombre = leeString();
No se puede hacer asignaciones de ese tipo con cadenas de caracteres, se debe usar una función de copia:
Código:
strcpy(Alumnos.Nombre, leeString());
Aunque me parece más fácil hacerlo directamente, evitando tener que crear una función:
Código:
scanf("%s",&Alumnos.Nombre);