Hola buenas, les traigo un ejercicio en C que me han mandado para estas navidades y que no debe tener ni un error ni warnings. El caso es que tiene 6 advertencias y, ante todo, hay una de las opciones (la 2) que va mal.
...................................
...................................
Copypasteé tu programa y al compilarlo me encontré con una infinidad de Warnings, que a vos te hayan saltado 6 es por el compilador usado. Salvo dos, el resto se debía a la manera de declarar e inicializar las variables.
Pero había dos que eran gruesos y probablemente sean la causa de error en (2) , "probablemente" pues no lo he ejecutado.
En las rutinas:
char *encriptartext()
{
int i=0,j=0,k=0,l=0;
char sol[256],encrip[256];
..........................
..........................
..........................
return sol;}
char *desencriptartext()
{
int i=0,j=0, k=0;
char fin[256],
desencrip[256];
..........................
..........................
..........................
return desencrip;}
Estás declarando
sol y
desencrip como variables locales y devolviendo su dirección ==> las variables locales son "pisoteadas" ni bien se vuelve del subprograma, toda nueva variable local y todo nuevo llamado a subprograma les escribe encima.
Solución: Declararlas como
static char sol[256] y
static char desencrip[256]