Título: Error en programa Publicado por: apoeti en 7 Septiembre 2012, 14:43 pm Hola, soy yo otra vez con un error en un programa. Como siempre será algo muy básico que no he conseguido ver, pero aquí os pongo el código fuente:
Código
La idea es que se imprima un archivo en bloques de 280 caracteres en hexadecimal y en ASCII. La verdad es que ni yo mismo creo que este bien hecho de esta manera para imprimir en hexadecimal, pero bueno... Aquí os lo dejo. Espero vuestras correcciones y consejos. Saludos. Título: Re: Error en programa Publicado por: 0xDani en 7 Septiembre 2012, 15:06 pm Pues para empezar, deberias acostumbrarte a ponerle valor de retorno a main, luego en el for usas comas en vez de punto y coma:
Código
Tambien podrias poner los errores que te da el compilador. Saludos. Título: Re: Error en programa Publicado por: DickGumshoe en 7 Septiembre 2012, 15:55 pm Hola.
Además de los errores que ya te ha comentado 0xDani, te digo unos cuantos más: El bucle while no es necesario, ya que al salir del segundo for la variable carácter será EOF. En el segundo bucle for, imprimes el carácter, ya que pones '%c'. Para imprimir el ASCII, lo que tienes que hacer es poner '%d'. Al salir del primer bucle for ocurre una cosa: la variable carácter es EOF. Por lo tanto, como en la condición del segundo for tienes que se repita mientras carácter sea distinto de EOF, no entrará, y no imprimirá el valor ASCII. Para evitarlo, debes darle un valor cualquiera a dicha variable entre un bucle y otro. Por último, te recomiendo que cuando no vayas a volver a utilizar el fichero que has abierto, lo cierres con fclose(fp). Aquí te dejo el código editado y comentado: Código
Un saludo. Título: Re: Error en programa Publicado por: durasno en 7 Septiembre 2012, 15:56 pm Código de esa forma estas asignando una cadena y no un caracter Título: Re: Error en programa Publicado por: apoeti en 7 Septiembre 2012, 18:04 pm Siento haber caído en cosas tan triviales :(. Eso sí, respecto a lo de que lo imprima en ASCII, depende de la interpretación, pues yo he entendido que imprima el carácter normal, no el número, para lo que sí haría falta %d. Y aun así, el programa no me funciona. Se supone que tiene que pasar el texto por bloques a hexadecimal y ASCII. Si uso el código fuente como fichero a leer, el programa arroja esto:
Escriba la ruta del archivo: ./16-9.c bf9a1569 Otra cosilla, respecto a lo de poner valor de retorno a main, siempre he visto que la gente suele poner "int main()" y al final de main "return 0". He leído que es para reconocer errores y cosas así, pero no entiendo cómo sacarle partido ¿Me lo podéis explicar o pasarme algún enlace con información? Título: Re: Error en programa Publicado por: DickGumshoe en 7 Septiembre 2012, 18:24 pm Qué raro... A mí me imprime el texto primero en hexadecimal y después en ASCII. Si pongo como archivo el código fuente de mi anterior mensaje, la salida es esta:
Código: Escriba la ruta del archivo: l.c ¿No te sale eso, o no es lo que querías? ¡Un saludo! Título: Re: Error en programa Publicado por: apoeti en 7 Septiembre 2012, 18:29 pm Vale... epic fail XD. El problema estaba en que lo había guardado con el mismo nombre que el programa erróneo en otra ubicación y estaba usando el erróneo.
El programa va perfecto. Gracias a todos por vuestra ayuda. Saludos. |