PDA

Ver la versión completa : Mantener consola abierta [C]



hckr
19-08-2010, 12:33
Hola chicos, me estoy introduciendo al C y quería saber como mantener la consola abierta despues de la ejecucion de un comando, para que le de tiempo a mi ojo a ver los resultados :D ¿Alguien me ayuda?

3m.8>(9/3)
19-08-2010, 13:25
Si simplemente quieres parar el programa te valdra con poner
gechar (); antes de el
return X; que pongas, donde X es el valor que le quieras dar (normalmente cero)esto funciona al incluir la libreria stdio.h
#include <stdio.h> te dejo un ejemplo de un hola mundo.


#include <stdio.h>

int main()
{
printf("Hola Mundo");
gechar ();
return 0;
}

Saludos.

hckr
19-08-2010, 14:22
Grax men pero el Devc++ me da este error [Linker error] undefined reference to `gechar' . te doy mi codigo a ver... Ah y de camino a ver si me solucionas otra cosa:

#include <stdio.h>

int mama=47;
char edad_papa[]="viejo";

main()

{
printf( "mama tiene %d; sin embargo papa es muy %c",
mama, edad_papa );
gechar ();
return 0;
}


Vale, se me presentan 2 errores: al poner char edad_papa luego en el printf no me sale "viejo" (sin comillas), me sale un rombo chiquitito. Luego, se me cierra la consola. Enga a ver si me ayudas.

P.D.:Con lo que me dijistes ni me compila.. :D pero grax men

hckr
19-08-2010, 14:36
Problema de mantener la consola abierta resuelto; es getchar(), no gechar(). Lo de edad_papano lo resolví aún... Grax por la ayuda men :D

hckr
19-08-2010, 15:11
Chicos duda arreglada. Os digo la solucion: al poner en printf %c, es para un caracter simple, pero si ponemos %s, ponemos una cadena de caracteres. Lo de mantener la ventana abierta, tiene que haber otro metodo, porque el procedimiento Getchar() es para obtener caracteres del teclado. Fuciona pero no es lo que busco. Alguien me ayuda? :confused::confused::confused:

P.D.: El codigo correcto era:
#include <stdio.h>

int mama=47;
char edad_papa[] = "viejo";

main()

{
printf( "mama tiene %d; sin embargo papa es muy %s.",
mama, edad_papa );
getchar();
return 0;
}

3m.8>(9/3)
19-08-2010, 15:14
Te comento que Dev C++ esta algo obsoleto, te aconsejaria code::blocks (http://www.codeblocks.org/) es gratuito y libre distribución.
Hace algun tiempo que no toco C++ y C casi ni lo vi, así que era normal que se me confundiera en alguna letra :), me alegro de que lo allas solucionado.

3m.8>(9/3)
19-08-2010, 22:10
Lo de mantener la ventana abierta, tiene que haber otro metodo, porque el procedimiento Getchar() es para obtener caracteres del teclado. Fuciona pero no es lo que busco. Alguien me ayuda? :confused::confused::confused:


puedes utilizar
system ("PAUSE");
Pero tendras que incluir windows.h
#include <windows.h>



Seria así:


#include <stdio.h>
#include <windows.h>

int mama=47;
char edad_papa[] = "viejo";

main()

{
printf( "mama tiene %d; sin embargo papa es muy %s.",
mama, edad_papa );
system ("PAUSE");
return 0;
}
No puedo probarlo ahora mismo, pero debería de funcionar (aunque claro, ya tendrías que programar específicamente para Windows olvidándote de otros SO ...).

hystd
20-08-2010, 01:03
Otra solución, para nada recomendable... meter al final un:


while (1);

Se te quedará bloqueado, pero evita tanto para el caso de system("pause"), como para el de getchar(), tener que pulsar una tecla para finalizar. Con el while(1), pulses lo que pulses, quedará activo hasta eliminar el proceso.

Un saludo.

3m.8>(9/3)
20-08-2010, 01:27
Nunca había pensado en meter un bucle más bien en poner algo para decidir si acabar la aplicación o no.

hckr
20-08-2010, 11:30
Ah gracias 3m (te apodaré asi si no te importa :D ), pero me sale lo de Presione una tecla para continuar... No hay una especie de @echo off? lo de getchar() funciona pero es como una trampa :P

3m.8>(9/3)
20-08-2010, 13:56
La verdad (por mi corta experiencia en el lenguaje) desconozco si hay algún comando para desactivar los mensajes, aun así espero que tengas suerte y encuentres lo que necesitas.

Saludos.

RaidMan
20-08-2010, 14:59
Es muy sencillo.

En lugar de "system("PAUSE");" pon:

system("PAUSE >null");


Un saludo

PD: El problema de esto es que creara un archivo de salida llamado "null" en el que pondra "Pulse una tecla para continuar..." pero lo puedes solucionar añadiendo otro "system("DEL null");" Es una solucion poco elegante, pero sencilla.

Fruit
28-08-2010, 19:57
Supongo que llego bastante tarde, pero para que se quede parada la consola y no muestre nada en pantalla (y sin crear archivos), supongo que puedes usar:


system("PAUSE > nul");