[C con Clase] El resultado del programa se muestra y se quita tan rapido que no puedo verlo.

Steven Davidson steven en conclase.net
Dom Dic 31 15:47:52 CET 2006


Hola Juan Pablo,

El pasado 2006-12-31 04:16:14, Juan Pablo Toral escribió:

[CORTE] 

JPT>    } /* fin de if */
JPT>    getchar();
JPT>    return 0; /* indica que el programa terminó con exito */
JPT> } /* fin de la función main */
JPT> Pero con esto no funciona, lo de usar el getchar se me hace mas correcto,
JPT> tal vez necesite algo mas.

Veamos. Este problema se debe a que estás ejecutando tu programa desde MS-Windows directamente. El gestionador de la interfaz de MS-Windows crea una ventana para ejecutar tu programa, pero cuando éste termine, pues entonces automáticamente cierra la ventana. Todo esto aparenta que el programa se abre y se cierra rápidamente.

Si ejecutas el programa manualmente, desde la consola, no tendrás este problema. También huelga decir, que bajo otros entornos, este problema no existe.

Para solucionar el problema, podrías usar 'getchar()' a modo de detener el programa, según la interacción del usuario. Veo que lo has usado, pero sigues teniendo un problema. Esto es porque 'getchar()' recoge el siguiente carácter a leer desde el teclado. Sin embargo, ya existe un carácter en el búfer del teclado, específicamente '\n' ya que no fue extraído al leer los caracteres para los números enteros de 'resultado'. Por esta razón, aparenta que 'getchar()' no funciona correctamente. Deberías invocar otra 'getchar()'. Por ejemplo,

  ...
  getchar();  /* extraer '\n' */
  getchar();  /* detener el programa */
  return 0;
}

Como estás bajo MS-Windows, puedes ejecutar el comando "pause" a través de la función 'system()'. Por ejemplo,

  ...
  system( "pause" );  /* detener el programa */
  return 0;
}


Espero haber aclarado la duda.

Steven


Más información sobre la lista de distribución Cconclase