Tienes varios problemas. Uno de ellos ya te lo he comentado en un hilo anterior:
Cito:
Cita:
Iniciado por eferion Por cierto, qué sucede si en tu archivo de reglas tienes los caracteres en el orden A B y la cadena de entrada resulta ser "BA"?? te adelanto una pista, no va a descrifrar el mensaje completo.
Yo en tu lugar lo primero que haría es leer el fichero de claves y almacenar su contenido en un array. Después, con las claves ya cargadas, procedería a iterar sobre "bin" para realizar las operaciones de cifrado-descrifrado.
¿Y por qué pasa eso? Pues simplemente porque estás recorriendo el fichero sobre la marcha: Lees una secuencia y recorres el fichero hasta localizarla... pero para el siguiente elemento de la secuencia no reinicias el puntero de lectura, por lo que la búsqueda de la nueva secuencia empieza a partir del punto en el que lo dejó la anterior. Si resulta que la nueva secuencia estaba almacenada en el fichero en una posición anterior, no vas a dar con ella en la vida.
Por cierto, también te puede servir colocar el puntero interno de lectura al inicio del fichero después de localizar cada secuencia.
Te podías molestar en leer los mensajes completamente. Si pides ayuda, no haces caso de nuestras sugerencias, y vuelves a preguntar sobre lo que ya te hemos contestado.
En cuanto a lo de leer una secuencia completa... vamos a ver, tu lees el texto a descifrar del tirón:
Después, abres e iteras sobre el archivo de reglas:
En cada iteración lees una línea del fichero:
Y, si ésta iteración ha ido bien, copias los primeros 5 caracteres de la entrada del usuario en la variable
array
Código C:
Ver originalfor (v=0;v<z;v++){
array[v]=bin[v];
l++;
}
y estos últimos pasos se repiten hasta que localizas la secuencia. ¿Eres capaz de localizar ahora los problemas?
- SIEMPRE te estás copiando en array los primeros 5 caracteres de la secuencia, luego únicamente vas a ser capaz de descrifrar 1 carácter
- El bucle principal de tu programa depende de que puedas seguir leyendo el fichero. Lo lógico es que el bucle principal iterase sobre la entrada del usuario, separando dicha cadena en secuencias de 5 caracteres para poder encontrar la correspondencia a cada una
Ah si, plantéate quitarte el miedo y empieza a usar el depurador de código. Es una herramienta imprescindible y tremendamente útil. Eso y tener a mano papel y lápiz (lo necesitas para hacer el diseño de la aplicación, algo básico para asegurar que tu programa funciona cómo esperas, así como para ir llevando cuentas que verifiquen que los pasos los está realizando correctamente).
Un saludo.