elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Guía actualizada para evitar que un ransomware ataque tu empresa


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  Romper ciclo sin interferir.
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Romper ciclo sin interferir.  (Leído 2,559 veces)
Ruben_efl18

Desconectado Desconectado

Mensajes: 5



Ver Perfil
Romper ciclo sin interferir.
« en: 11 Mayo 2016, 02:59 am »

Buenas.   ::)
Les cuento el problema que tengo, básicamente estoy haciendo un reloj y quiero que solamente al oprimir una tecla este se detenga, pero no encuentro la forma mas eficiente de hacerlo, ya que con el código como lo tengo hace una pausa hasta que introduzca un dato, y eso no es lo que quiero, quiero que el reloj continué sin pausarse y en cualquier momento que teclee x tecla salga del mismo. Les anexo el código si me pueden ilustrar con esto estaría muy agradecido.

Código:
#include<stdio.h>
#include<time.h>
#include<conio.h


int main(){

char tecla;



do{
time_t tiempo=time(0);
                struct tm *tlocal = localtime(&tiempo);
                char output[128];
strftime(output,128,"%d/%m/%y %H:%M:%S",tlocal);
printf("%s\n",output);
Sleep(100);


tecla=getch();    //Este getch es el que menciono
if(tecla=='m')return 0;



system("cls");

}while(1);
printf("Saliendo..."); getch(); return 0;
}


En línea

geeke

Desconectado Desconectado

Mensajes: 93


Ver Perfil
Re: Romper ciclo sin interferir.
« Respuesta #1 en: 11 Mayo 2016, 04:36 am »

Si usas conio.h dispones de kbhit()

Código
  1. if (kbhit())
  2. {
  3.    // Se presionó una tecla
  4. }

Cabe destacar que conio.h no es estándar ni tampoco portable


En línea

ivancea96


Desconectado Desconectado

Mensajes: 3.412


ASMático


Ver Perfil WWW
Re: Romper ciclo sin interferir.
« Respuesta #2 en: 11 Mayo 2016, 15:48 pm »

Una opción, es que tengas un thread a parte que pida la entrada. Si la entrada es la que buscas, cambia por ejemplo una variable global "terminado = 1". El thread principal, lo único que haría es comprobar en cada ciclo si "terminado==1".

Otra opción, podría ser capturando una señal como la de interrupción, enviada al pulsar CTRL+C. No funcionará en todos los casos, pero es una opción en ese caso particular.
http://stackoverflow.com/questions/4217037/catch-ctrl-c-in-c
En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
como romper, cerrar, salir de un ciclo!!!
Programación C/C++
astro1 6 37,656 Último mensaje 1 Junio 2011, 06:06 am
por 4rkn63l
Interferir en el wifi?
Redes
flyingwifi 4 3,426 Último mensaje 29 Marzo 2012, 23:31 pm
por simorg
Muere un hacker justo antes de demostrar cómo interferir a distancia un ....
Noticias
wolfbcn 0 1,828 Último mensaje 26 Julio 2013, 22:07 pm
por wolfbcn
[OFF] ¿Se puede interferir un numero de celular?
Dispositivos Móviles (PDA's, Smartphones, Tablets)
jaxoR 2 3,000 Último mensaje 12 Octubre 2014, 01:11 am
por jaxoR
se puede interferir una emision de radio?
Electrónica
snakeeyes 3 13,902 Último mensaje 1 Febrero 2018, 01:22 am
por snakeeyes
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines