Buenas,
estoy programando un cifrado César con la tabla de código ASCII.
Ejemplo:
Si pongo desplazamiento
4 y la palabra taxi, al hacer el cifrado tendría que aparecer
xebm, pero el problema es que me imprime
xe|m.
Dejo el código
Código:
#include <stdio.h>
#include <string.h>
void codificarText(int, int);
int main(){
int desplacament = 0;
char nomfitxer[50], cadena = 0;
printf("Desplaçament: ");
scanf("%d", &desplacament);
printf("Nom fitxer: ");
scanf("%s", nomfitxer);
printf("Cadena encriptar: ");
codificarText(desplacament, cadena);
return 0;
}
void codificarText(desplacament, cadena){
while ((cadena = getchar()) != '*'){
if((cadena + desplacament > 'z') || (cadena + desplacament > 'Z')){
//cadena = cadena + desplacament - 26;
cadena = (cadena + desplacament % 27);
printf("%d", cadena);
putchar(cadena);
}else if((cadena + desplacament > 'A' && cadena + desplacament < 'Z') || (cadena + desplacament > 'a' && cadena + desplacament < 'z')){
cadena = cadena + desplacament;
putchar(cadena);
}
else{
cadena = cadena;
putchar(cadena);
}
}
}