2011-02-02 80 views
13

Soy un principiante de C. Ejecuto el programa C, pero la ventana se cierra demasiado rápido antes de que pueda ver algo. ¿Cómo puedo detener la ventana?¿Cómo pausar en C?

Respuesta

35

puede poner

getchar(); 

antes del retorno de la función principal. Eso esperará una entrada de caracteres antes de salir del programa.

Alternativamente, podría ejecutar su programa desde una línea de comando y la salida sería visible.

+0

Sí, entonces sólo tiene que pulsar una tecla para terminar el programa y cerrar la ventana. –

+5

No, tendrá que presionar enter ... –

+1

+1 para "ejecutar desde la línea de comandos", que es una habilidad que en estos momentos no existe. –

1

Supongo que está en Windows. En lugar de intentar ejecutar su programa haciendo doble clic en su icono o haciendo clic en un botón en su IDE, abra un símbolo del sistema, cd al directorio en el que se encuentra su programa y ejecútelo escribiendo su nombre en la línea de comando.

5

¿Es un programa de consola que se ejecuta en Windows? Si es así, ejecútelo desde una consola que ya ha abierto. es decir, ejecute "cmd", luego cambie a su directorio que tiene el .exe (usando el comando cd), luego escriba el nombre del exe. La ventana de tu consola permanecerá abierta.

2

Si está haciendo un programa de ventana de consola, puede usar el sistema ("pausa");

+1

Eso depende. ¿En qué sistema operativo funciona? –

+0

@JerryJeremiah dijo "ventanas". Creo que 'pause' también funciona en Linux y Mac. –

+0

No funciona en ksh en mi RS6000, así que no creo que sea POSIX .... –

1

getch() también se puede utilizar que se define en conio.h.

El programa de ejemplo se vería así:

#include <stdio.h> 
#include <conio.h> 

int main() 
{ 
    //your code 
    getch(); 
    return 0; 
} 

getch() espera para cualquier entrada de caracteres desde el teclado (no necesariamente tecla enter).

+1

Esto es solo en Windows. Unix no tiene conio.h –

1

También puedes, simplemente utilizar system("pause");

6

Si desea simplemente retraso el cierre de la ventana sin tener que pulsar un botón en realidad (getchar() método), puede simplemente usar el método sleep(); toma la cantidad de segundos desea dormir como argumento.

#include <unistd.h> 
// your code here 
sleep(3); // sleep for 3 seconds 

Referencias: sleep() manual

1

Buen trabajo me acordé de archivos por lotes de DOS. No necesita Getchar() en absoluto. Simplemente escriba el archivo por lotes para cambiar el directorio (cd) a la carpeta donde reside el programa. escriba el nombre del programa exe y en la siguiente línea escriba pausa. ejemplo:

cd\ 

wallpaper_calculator.exe pausa

2

En sistemas POSIX, la mejor solución parece utilizar:

#include <unistd.h> 

pause(); 

Si el proceso recibe una señal cuyo efecto es terminarlo (normalmente escribiendo Ctrl + C en el terminal), luego pause no devolverá un nd el proceso terminará efectivamente por esta señal.Un uso más avanzado es usar una función de captura de señal, llamada cuando se recibe la señal correspondiente, después de la cual regresa pause, reanudando el proceso.

Nota: el uso de getchar() no funcionará si se redirige la entrada estándar; de ahí esta solución más general.

0

Para Linux; getchar() es todo lo que necesitas.

Si está en Windows, revise lo siguiente, ¡es exactamente lo que necesita!

kbit (función

  • kbhit()) función se utiliza para determinar si una tecla ha sido pulsada o no.
  • Para usar kbhit() en los proramas C o C++, debe incluir el archivo de encabezado "conio.h".

Por ejemplo, vea cómo funciona en el siguiente programa;

//any_key.c 

#include <stdio.h> 
#include <conio.h> 

int main(){ 

    //code here 
    printf ("Press any key to continue . . .\n"); 
    while (1) if (kbhit()) break; 
    //code here 
    return 0; 

} 

Cuando compilar y ejecutar el programa, this es lo que veo.

Sólo cuando el usuario presiona tan sólo una tecla del teclado, kbhit() retornos 1.

Cuestiones relacionadas