HOla de nuevo, os traigo otro nuevo problema.
NEcesito hacer un programa que al meterle una cadena de caracteres, te la devuelva encriptada con una clave.
Es decir el programa ha de pedirte que introduzcas la cadena, y que introduzcas una clave.
el programa ha de acer que cada caracter de la cadena se convierta en el caracter tantas veces desplazad a la derexa como indique la clave.
Ejemplo
introduzco "PEPE" y la clave 2.
el programa debera devolver RGRG.
No se si me e explicado.
No me realiza correctamente el programa.
El codigo es este y no se en que falla
#include<stdio.h>
#include<stdlib.h>
char* encripta (char* pcadena,int clave);
int main()
{
char* pcadena;
char cadena[99];
char* a;
int clave;
int pause;
printf("introduce la cadena a cifrar\n");
scanf("%[^\n]",cadena);
pcadena=cadena;
printf("introduce la clave\n");
scanf("%d",&clave);
a=encripta(pcadena,clave);
while (a!='\0')
{
printf(" %c ",*a);
a++;
}scanf("%d",&pause);
return 0;
}
char* encripta (char* pcadena, int clave)
{
char a,ae;
int i;
char cadenaencriptada[99];
char* pcade;
i=0;
pcade=cadenaencriptada;
a=*pcadena;
while (a!='\0')
{
a=*pcadena;
pcadena++;
ae=(a+clave);
cadenaencriptada[i]=ae;
i++;
}
return pcade;
}
La parte en azul probe a sustituirla por esta otra, para ver en que fallaba, y aunque solo pusiera los tres primerosdigitos, sabria si estaban bien puests o no. Y efectivamente nada mas el primer digito cumplia la funcion de traspasar "clave" veces a la derexa. El rsto ponia lo que le daba la gana.
printf(" %c ",*a);
a++;
printf(" %c ",*a);
a++;
printf(" %c ",*a);
a++;
con este trozo de codigo sustituido en el azul metia la cadena "abc" y me devolvia cando le metia la clave 1 "b(simboloraro)(simboloraro)"
Es decir solo estaba bien la primera, el resto nada.
¿QUE PUEDE SER?Gracias ante todo-:D