Bucle finalizado con enter

Iniciado por cjordan, 12 Junio 2010, 10:57 AM

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

cjordan

Buenos dias!

Me urge mucho resolver este tema!!! Vereis, quiero hacer un bucle infinito en C con un while(), que se finalize cuando el usuario pulse enter. Como puedo hacerlo?

Horricreu

Pero si es infinito no va a poder continuar me parece, pero bueno:

Código (cpp) [Seleccionar]
while(1) //o while(TRUE)
{
}

getchar();


Saludos :P

cjordan

esa es la cuestion, que el bucle no se pare hasta que el usuario pulse enter. Es decir, que esté pendiente todo el rato de si el usuario teclea algo o no... alguien sabe como?

Horricreu

#3
Código (cpp) [Seleccionar]
int a = getchar();

if(!a)
{
while(1);
}


Saludos :P

O-LLOS-O

me podrias explicar pq funciona eso?? o alguien xdxd, no lo entiendo.

lo he hido variando para intentar averiguar-lo pero no lo entiendo.


Código (cpp) [Seleccionar]
#include<iostream>
using namespace std;

int a = cin.get();

int main(){
  cout << "hoa" << endl;
  if(!a) {
    while(1){
      cout << "hola" << endl;
    }
  }
}


Una de las variaciones es esta, no entiendo pq no sale "hoa", hasta que se aprete enter, igual que nunca sale "hola".


Mercy

[D4N93R]

Bueno que me acabo de despertar y no entendí lo que querias, debe ser algo así, sino explicamelo de nuevo que ahora me tomo un café.

Código (cpp) [Seleccionar]
#include "stdafx.h"


int main()
{
while(getchar())
{
printf("test\n");
}
return 0;
}

Littlehorse

Citar
Código (cpp) [Seleccionar]
#include<iostream>
using namespace std;

int a = cin.get();

int main(){
  cout << "hoa" << endl;
  if(!a) {
    while(1){
      cout << "hola" << endl;
    }
  }
}

Una de las variaciones es esta, no entiendo pq no sale "hoa", hasta que se aprete enter, igual que nunca sale "hola".

Porque usando cin.get de esa forma, incluso si pones un 0, el valor del entero no sera 0, si no 48. Por lo tanto nunca cumplís la condición del if.

Citar
Código (cpp) [Seleccionar]
int a = getchar();

if(!a)
{
while(1); // faltaba ";"
}

Sucede lo mismo que en el código anterior.

Citar
Código (cpp) [Seleccionar]


#include "stdafx.h"//No se necesita el header precompilado en este caso

int main()
{
while(getchar())
{
printf("test\n");
}
return 0;
}

Eso es mas bien lo contrario. Imprimirías test solo si se presiona enter, incluso si presionas varios caracteres y luego enter, se imprimirá tantas veces como datos queden en el buffer de entrada.

Citar
Me urge mucho resolver este tema!!! Vereis, quiero hacer un bucle infinito en C con un while(), que se finalize cuando el usuario pulse enter. Como puedo hacerlo?

Para hacer lo que quieres hacer, necesitas usar funciones especificas de cada sistema, por lo tanto, primero tienes que aclarar en que sistema estas trabajando. Igualmente en el foro hay varios ejemplos que te pueden servir.

Saludos
An expert is a man who has made all the mistakes which can be made, in a very narrow field.

[D4N93R]

Yo todavía no entiendo lo que el quiere. O sea, que el ciclo siga corriendo ininterrumpidamente hasta que se presione una tecla?, creo que hay que usar un thread no?

Debci

Me temo que hay que usar threads y ser algo asi:
Arrancar el thread con el bucle.
En el thread main del codigo esperar una tecla, si se cumple matar el thread del bucle secundario.

Saludos

[D4N93R]

Cita de: ..::| D3Bć1 |::. en 12 Junio 2010, 20:14 PM
Me temo que hay que usar threads y ser algo asi:
Arrancar el thread con el bucle.
En el thread main del codigo esperar una tecla, si se cumple matar el thread del bucle secundario.

Saludos

De las formas que se me ocurren para hacerlo, esa que dices es muy buena..

También se puede hacer con un hook al teclado.. o esuchando los mensajes del sistema.