Vamos a ver , estás devolviendo un puntero , a una cadena de carácteres , si todavía no sabes que son los punteros pues como indica su nombre son apuntadores¿a qué? a direcciones de memoria, entonces char tx2[20] es un puntero que puede variar 20 posiciones, como se le ha indicado , pero claro tu estás asignando un puntero que se retorna de una función , a un array de carácteres.Y eso no es así , te dejo el código corregido:
Código (c) [Seleccionar]
#include <stdio.h>
char* func () {
char txt2[20];
printf("\nIntroduce word = ");
scanf("%s", &txt2);
return txt2;
}
int main () {
int len = 20;
char *str; //Puntero al inicio de la variable txt2 , o sea a txt2 [0]
str = func();
printf("\nResult = %s.", str);
return 0;
}ara que te quede bien sería: