[ Foro de C ]

Dev-C++

29-Dec-2009 02:23
Manuel Carvajal
5 Respuestas

Hola, he comenzado recientemente el curso y ya llegue a mi primero tropezon.. Justamente en el objetivo 1.7, al ejecutar, a pesar de utilizar "getchar()" la ventana se cierra lo suficientemente rapido para que no me de tiempo de ver el resultado, en cualquiera de los ejercicios.. Me imagino que el solo hecho de que no me indique algun error y se ejecute significa que esta bien estructurado y eso.. Pero me gustaria que la ventana no se cerrara al terminar la resta/suma/multiplicacion/division.. Espero alguien me pueda ayudar! Gracias de antemano!


29-Dec-2009 06:56
Roberto rrs

Hola.
Puedes probar a poner varios getchar() seguidos, a mi me funciono así al principio, hasta que aprendas a hacer bucles y demás.
Saludos.


29-Dec-2009 07:16
Jesús S.

¡Hola!

Es raro que no te lo pare getchar(). Por si acaso pon un par de ellos, no vaya a ser que la primera pulsación en el teclado forme parte de lo que espera el programa.

Prueba si no con system("PAUSE");.

Saludos


29-Dec-2009 15:56
Manuel Carvajal

Gracias a ambos! Las dos cosas me funcionaron, ya habia probado colocando el getchar() un par de veces pero no se q estaba pasando por mi mente al colocarlo en la misma linea, el system("PAUSE"); tambien me resulto muy bien, diria que mejor que el getchar();! De nuevo gracias!


30-Dec-2009 01:18
Nacho Cabanes (+83)

Es mejor el "getchar", que espera un carácter del teclado, que el "system", que llama a una orden del sistema operativo, con los posibles problemas de que no exista esa orden en un cierto sistema, de que no haya memoria para ejecutarla, etc.

En cuanto al motivo de que parezca que falle el "getchar":

Si lees un número con scanf("%d",&numero) y tecleas el número 20, realmente tú pulsas 2, 0, Intro. Las cifras 2 y 0 se toman del buffer (memoria intermedia) del teclado y se guardan en la variable "numero", pero la pulsación de la tecla Intro corresponde a un carácter no numérico, por lo que se queda todavía en el buffer del teclado.

De modo que una primera llamada a "getchar" después del "scanf" no haría realmente una pausa, sino que absorbería ese "Intro" pendiente.

Por eso es recomendable añadir un "getchar" después de un "scanf" que lea un número o un carácter, para absorber ese avance de línea y evitar que si después intentas leer una cadena obtengas una cadena vacia.

Es un problema frecuente, así que lo he detallado un poco más al final del apartado 4 del curso (en la versión Web; la nueva versión PDF todavía no está disponible, voy revisando y ampliando por el capítulo 7, así que espero que esté lista en un par de semanas).


02-Jan-2010 22:31
Manuel Carvajal

Excelente explicación! Este foro para dudas es realmente muy útil! Gracias por su dedicación!






(No se puede continuar esta discusión porque tiene más de dos meses de antigüedad. Si tienes dudas parecidas, abre un nuevo hilo.)