Comportamiento inusual e inexplicable de fprintf #67
-
Estoy teniendo problemas con el funcionamiento de mi tarea en relación con la escritura al archivo de salida, y necesito la ayuda de un mago de C. Después de terminar mi programa, el primer par de pruebas funcionaron perfectamente, pero repentinamente falló con una prueba fácil. Noté que el fallo fue que paró de escribir a output_file repentinamente, por lo que pensé que debería tener un error en el conteo de comandos, por lo cual terminó antes. Sin embargo, al probar otros tests, el programa nunca paró de ejecutarse, por lo cual pensé que definitivamente era un mal manejo de las iteraciones. Incluso, en uno de los tests, recibí un error de segmentation fault, lo cual también me hizo pensar en mal manejo de memoria. Para resolver mis dudas, agregué un printf (NO fprintf) al inicio de cada iteración que indica cuantos comandos quedaban por ejecutar, y lo sorprendente de esto es que ahora el programa siempre termina sin errores y en la cantidad de comandos correcta. Valgrind indica que todos los tests tienen 0 errores y toda la memoria en todos los tests es liberada por completo, lo cual me dice que el programa se está ejecutando en su totalidad, y ahora para variar me pasa que al archivo de output donde escribo la salida siempre se le escribe exactamente una línea de salida (correcta :) ). Intenté agregar fflush al final de cada fprintf, pero no solucionó nada. De intuición se me ocurre mal manejo de buffer de fprintf (si es que existe) pero realmente no sé qué pasa con mi tarea. Le ruego ayuda a algún mago de C. Muchas gracias. |
Beta Was this translation helpful? Give feedback.
Replies: 1 comment 3 replies
-
No soy un dios de C ni un mago de C, pero me gustaría añadir la consideración de que se han visto varios problemas por el asunto del |
Beta Was this translation helpful? Give feedback.
No soy un dios de C ni un mago de C, pero me gustaría añadir la consideración de que se han visto varios problemas por el asunto del
char color
en el código base (en vez de char *color o char color[NRO DIGITOS]. Si esta parte ya la tienes arreglada, avísanos y asegúrate de tener tu tarea en el repositorio para poder probarla