FREE Subscription to Dr. Dobb’s Digest: Same Great Content, New Digital Edition
Site Archive (Complete)
Embedded Systems
Email
Print
Reprint

add to:
Del.icio.us
Digg
Google
Furl
Slashdot
Y! MyWeb
Blink
September 18, 2009
C Snippet #5

Bob Stout
Timers and default actions

Q: HOW DO I... put timers with default actions in my C code?

A: Many times, we need to write programs that will only wait a certain specified amount of time for a user to do something. After that time, we need to assume that the user isn't going to do anything and move on to some specified deafult action. This Snippet works exactly like the get_ch() function in most PC C compiler libraries, except that it will only wait as long as you tell it for the user to hit a key. If no key is pressed within the time limit, the function returns with an EOF.


/* ** TIMEGETC.C - waits for a given number of seconds for the user to press ** a key. Returns the key pressed, or EOF if time expires ** ** by Bob Jarvis */

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

int timed_getch(int n_seconds) { time_t start, now;

start = time(NULL); now = start;

while(difftime(now, start) < (double)n_seconds && !kbhit()) { now = time(NULL); }

if(kbhit()) return getch(); else return EOF; }

#ifdef TEST

void main(void) { int c;

printf("Starting a 5 second delay...\n");

c = timed_getch(5);

if(c == EOF) printf("Timer expired\n"); else printf("Key was pressed, c = '%c'\n", c); }

#endif /* TEST */

More C Snippets

All the code in C Snippets is either public domain or freeware and may therefore freely be used by the C programming community without restrictions. In most cases, if the original author is someone other than myself he or she will be identified. Thanks to all who have contributed to this collection over the years. I hope Dr. Dobb's readers will find these useful.

--Bob Stout
rbs@snippets.org

TOP 5 ARTICLES
No Top Articles.



MICROSITES
FEATURED TOPIC

ADDITIONAL TOPICS

INFO-LINK