Título: C - Problema al descifrar Publicado por: Fastolfe en 21 Marzo 2011, 22:27 pm Buenas!! Se me ha ocurrido hacer un programilla de cifrado de texto. El algoritmo no podría ser más simple, pero lo que es la cifrado funciona. Mi problema viene al descifrar, que aparentemente se hace bien, incluso puedo ver el texto original en la carpeta, pero al abrir el archivo me sale el siguiente error:
Gedit has not been able to detect the character encoding. Please check that you are not trying to open a binary file. Select a character encoding from the menu and try again. Este es el código: Código
Título: Re: C - Problema al descifrar Publicado por: Akai en 21 Marzo 2011, 22:51 pm Cuidadillo con gets y fflus(stdin), que pueden dar resultados un pelín inesperados:
http://foro.elhacker.net/programacion_cc/lo_que_no_hay_que_hacer_en_cc_nivel_basico-t277729.0.html Entrando con tu programa. Tengo la impresión que el problema pueda ser que no te fijas si has leído el final de fichero, y entonces eso te de problemas. Código
comprobar si Código y si lo es, finalizar el bucle sería una solución. Pero sigue siendo raro. Has probado a hacer un cat desde consola del fichero escrito a ver que sale? Título: Re: C - Problema al descifrar Publicado por: Fastolfe en 23 Marzo 2011, 18:29 pm No suelo usar el gets normalmente, en este caso ha sido por comodidad más que nada. Ok, tendré cuidado con los fflush jaja.
Probaré a comprobar si ha leido el final del fichero. Gracias! No se que es un cat xD Título: Re: C - Problema al descifrar Publicado por: Akai en 23 Marzo 2011, 18:57 pm http://linux.die.net/man/1/cat
Concatena ficheros, pero para lo que nos interesa, es que hagas en consola: cat fichero si eso no muestra el fichero como toca, entonces es que tienes problemas al escribirlo (¿probable?). Si lo hace, tienes problemas con el gedit (raro) Título: Re: C - Problema al descifrar Publicado por: Fastolfe en 23 Marzo 2011, 19:04 pm Con el cat si que me aparece el contenido del fichero correctamente.
Pero al abrir el fichero con el gedit me aparece el mismo mensaje. He probado a cambiar el bucle de estas dos formas, pero sigue apareciendo el mensaje: Código
Título: Re: C - Problema al descifrar Publicado por: Akai en 23 Marzo 2011, 19:38 pm gedit te abre bien los demás ficheros (cualquier otro fichero de texto que tengas) o también te da problemas?
Has comprobado que el fichero desde donde lees está correcto? Además, ten cuidado con eso: Código no sea cosa que esté jodiendo la representación. Sobretodo si pass2 es un número superior a 90. Cuando escribas, prueba a escribir, después de la parte cifrada, un EOF. Por otro lado, quizá abriendo el fichero a escribir como w a secas ayude. w+ es para lectura y escritura.Esto en principio no debería ser el problema, pero por si las moscas. Título: Re: C - Problema al descifrar Publicado por: Garfield07 en 23 Marzo 2011, 20:24 pm Código
1) No es recomendable usar variables globales si no hace falta. No te acostumbres. Tampoco es bueno usar mucho DEFINE. 2) Tu código puede simplificarse mucho. Tienes líneas de más que hacen el texto más confuso. Tu código tiene muchísimas cosas que mejorar. Te cedo el mío (de ahora mismo ;)), ahora añádele funciones de comprobación de errores y arregla el código para que la salida sea legible; yo mismo te concederé un pin :) jeje. Si no te importa déjame algo de créditos :silbar: PD: No, no me he puesto a pensar cómo hacer salida legible... Título: Re: C - Problema al descifrar Publicado por: Fastolfe en 5 Abril 2011, 16:46 pm Perdón por tardar tanto tiempo en responder... he tenido bastantes examenes y apenas he podido meterme unos minutos...
Akai: El fichero está bién (supongo) porque si en lugar de escribir el texto descifrado en un fichero, lo escribo en pantalla sale perfectamente. Creo que el que pass2 sea superior a 90 no afecta al buen funcionamiento del programa, sino a los caracteres resultantes del cifrado tan solo. El w+ no me resuelve el problema... Sagrini: Tomo nota de ambos consejos, procuraré pasar las variables como parametros a las funciones en lugar de declararlas globales e intentaré simplificar los códigos que haga a partir de ahora. Probaré tu código =) Gracias!! |