Cierre brusco de la consola cuando ejecuto el .exe

Iniciado por Tauron, 9 Septiembre 2019, 14:28 PM

0 Miembros y 1 Visitante están viendo este tema.

Tauron

Buenas. Hice un programa en C con el DEV-C++ creando un nuevo proyecto en consola y finalmente compilando para que me sacara el .exe del resultado final.

Mi problema es que si ejecuto el programa desde el .exe funciona pero al momento de llegar al final no hace pausa y la consola se cierra sola.
Sin embargo, cuando abro el archivo .dev y compilo y ejecuto (sin haber cambiado nada de codigo, por lo que el .exe resultante es el mismo) la consola no se cierra sola al terminar.

No se a qué se debe este problema. No se si es que falta algún archivo o he hecho algo mal en el proceso de compilar a .exe.. la cuestion es que desde el IDE no se cierra y desde el .exe sí.

Los archivos que tengo en la carpeta del proyecto son:

Makefile.win
programa.c
programa.dev
programa.exe
programa.ico
programa.layout
programa.o
programa_private.h
programa_private.rc
programa_private.res

Gracias!

EDIT: Lo he medio solucionado limpiando el bufer antes de la salida del programa. Lo que no entiendo es por qué es necesario limpiar el bufer para que funcione correctamente el .exe si en el IDE no da problemas... por lo que asumo que algo raro debe haber. Espero respuestas (si es que alguien la sabe)

@XSStringManolo

Hola, ese comportamiento es normal. Los ides te mantienen la consola abierta tras finalizar la ejecución del programa para que puedas ver el resultado.

Para que la pausa se mantenga también en el ejecutable usa:
cin.get();
Ponlo antes del return 0; viene incluida en <iostream>. También tienes system("pause"); Lo verás mucho pero no es recomendado.

A parte también recomendarte que uses code::blocks en vez de DevCpp, es bastante más completo y se actualiza más frecuentemente.
Para escribir código yo uso notepadcpp y después con atajos de teclado copio, pego, compilo y ejecuto.

Tauron

Cita de: string Manolo en  9 Septiembre 2019, 16:26 PM
Hola, ese comportamiento es normal. Los ides te mantienen la consola abierta tras finalizar la ejecución del programa para que puedas ver el resultado.

Para que la pausa se mantenga también en el ejecutable usa:
cin.get();
Ponlo antes del return 0; viene incluida en <iostream>. También tienes system("pause"); Lo verás mucho pero no es recomendado.

A parte también recomendarte que uses code::blocks en vez de DevCpp, es bastante más completo y se actualiza más frecuentemente.
Para escribir código yo uso notepadcpp y después con atajos de teclado copio, pego, compilo y ejecuto.

Entiendo. Muchas gracias por tu respuesta!!   :D