Título: Problema al escribir archivo - 0D le precede a 0A (Solucionado) Publicado por: AlbertoBSD en 9 Mayo 2016, 06:06 am Problema al escribir archivo...
Realmente estoy rompiéndome la cabeza desde hace unos 2 dias... :silbar: :silbar: :silbar: Al momento de guardar datos en un archivo escribo los datos de 2 bytes en 2 bytes. Todo bien pero llega un momento en que el programa no guarda la información que debe de guardar, sin embargo si mando a imprimir lo que esta guardando esta información si es correcta, pero no la que se guarda en el archivo. Código
Mando a llamar a una función debug para ver que es lo que se esta guardando, esta función me imprime el contenido de la memoria sin afectarlo... Código
Aquí lo importante es notar que llamo a fwrite para escribir en el archivo abierto con la opcion "a+" Código
La posición de memoria que se guarda es: primos[offset]->valor y la cantidad de bytes que se guardan con fwrite y se imprimen con debug es primos[offset]->bytes que para el ejemplo dado vale 2 La salida del programa va mas o menos asi... Código: -primos[54]: 0x567fd0 0101 -primos[55]: 0x567ef0 0701 -primos[56]: 0x567f10 0d01 -primos[57]: 0x567ff0 0f01 -primos[58]: 0x567f60 1501 -primos[59]: 0x567e60 1901 -primos[60]: 0x568000 1b01 -primos[61]: 0x567f20 2501 -primos[62]: 0x567f90 3301 -primos[63]: 0x568010 3701 -primos[64]: 0x568020 3901 -primos[65]: 0x567e80 3d01 -primos[66]: 0x567f40 4b01 -primos[67]: 0x567f50 5101 -primos[68]: 0x568030 5b01 ... y donde se presenta el problema es la siguiente: Código: -primos[372]: 0x568520 f509 -primos[373]: 0x568560 f709 -primos[374]: 0x5682c0 fd09 -primos[375]: 0x5683f0 130a -primos[376]: 0x5682b0 1f0a -primos[377]: 0x568570 210a -primos[378]: 0x5681e0 310a -primos[379]: 0x568390 390a -primos[380]: 0x5683e0 3d0a -primos[381]: 0x5681f0 490a -primos[382]: 0x568330 570a -primos[383]: 0x5683a0 610a ... ¿Nada anormal? Claro esa salida esta bien, el problema esta al guardar el archivo en ese ultimo segmento queda asi (Salida hexadecimal) Código: F509F709FD09130D0A1F0D0A210D0A310D0A390D0A3D0D0A490D0A570D0A610D0A630D0A670D0A6F0D0A750D0A7B0D0A7F0D0A810D0A850D0A8B0D0A930D0A970D0A990D0A9F0D0AA90D0AAB0D0AB50D0ABD0D0AC10D0ACF0D0AD90D0AE50D0AE70D0AED0D0AF10D0AF30D0A030B110B150B1B0B Ahora que lo veo Noto un recurrente 0D y no tengo ni idea de donde sale, el detalle no veo error en donde se guarda el archivo repito: Código
En teoría lo que se muestra en la salida estándar y en el archivo creado debería de ser lo mismo primos[offset]->valor Si a alguien le a pasado algo similar o de plano ve un error que yo no veo por favor avíseme. No creo que sa detalle del sistema, el error se me presenta tanto en FreeBSD y en Windows Título: Re: Problema al escribir archivo Publicado por: tincopasan en 9 Mayo 2016, 12:27 pm la verdad no le entiendo bien a la función, pero si sé que el 0D sale de los saltos de línea, o sea "\n"
Título: Re: Problema al escribir archivo Publicado por: AlbertoBSD en 9 Mayo 2016, 13:11 pm Gracias, lo interesante que aparece el 0D y aparece en medio del numero a imprimir.
Código: -primos[372]: 0x568520 f509 -> Sin cambios -primos[373]: 0x568560 f709 -> Sin cambios -primos[374]: 0x5682c0 fd09 -> Sin cambios -primos[375]: 0x5683f0 130a -> Escribe 130D0A -primos[376]: 0x5682b0 1f0a -> Escribe 1F0D0A -primos[377]: 0x568570 210a -> Escribe 210D0A -primos[378]: 0x5681e0 310a -> ... -primos[379]: 0x568390 390a -> -primos[380]: 0x5683e0 3d0a -> -primos[381]: 0x5681f0 490a -> -primos[382]: 0x568330 570a -> -primos[383]: 0x5683a0 610a -> ... Todos los 0A precedidos por 0D.. esto huele a windows o creo que es algun problema de gcc del DEV C Viendo que era problema de ese caracter exclusivamente me imagine que era la comvinacion \n\r busque en google y puff http://stackoverflow.com/questions/5537066/strange-0x0d-being-added-to-my-binary-file Solucion abrir el archivo anexandole 'b' al fopen Saludos |