Takže tvůj kompilátor nepodporuje conio...
Tak zkus toto...zkopírováno ze souboru wincompat.h
Tohle mi funguje...gcc (MingW)

Kód:
#if !defined(WINCOMPAT_INCLUDED) && !defined(PLATFORM_WINDOWS) && !defined(WIN32) && !defined(WINDOWS) && !defined(__WIN32__)
#define WINCOMPAT_INCLUDED

/**
 * 
 * Author: Magnus Naeslund (mag@fbab.net, mag@bahnhof.se)
 * (c) 2000 Magnus Naeslund, all rights reserved
 * 
 */

#include <sys/time.h>
#include <sys/types.h>
#include <unistd.h>
#include <termios.h>
#include <stdio.h>
#include <stdlib.h>

#ifndef TRUE
  #define TRUE 1
#endif
#ifndef FALSE
  #define FALSE 0
#endif

#define _kbhit kbhit
#define stricmp strcasecmp
#define strnicmp strncasecmp

#define Sleep&#40;x&#41; usleep&#40;&#40;x&#41;*1000&#41;

static int            inited=0;
static struct termios ori;

static void tcatexit&#40;&#41;&#123;
   tcsetattr&#40;0,0,&ori&#41;;
&#125;

static void init_terminal&#40;&#41;&#123;
   struct termios t;
   tcgetattr&#40;0,&t&#41;;
   tcgetattr&#40;0,&ori&#41;;
   t.c_lflag &= ~&#40;ICANON&#41;;
   tcsetattr&#40;0,0,&t&#41;;
   atexit&#40;tcatexit&#41;;
&#125;

static inline int kbhit&#40;&#41;&#123;
  fd_set rfds;
  struct timeval tv;

   if &#40;!inited&#41;&#123;
	  inited=1;
	  init_terminal&#40;&#41;;
   &#125;
   
   FD_ZERO&#40;&rfds&#41;;
   FD_SET&#40;0, &rfds&#41;;
   tv.tv_sec = 0;
   tv.tv_usec = 10*1000;
   return select&#40;1, &rfds, NULL, NULL, &tv&#41;>0;
&#125;

static inline int getch&#40;&#41;&#123;
   fd_set rfds;
   
   if &#40;!inited&#41;&#123;
	  inited=1;
	  init_terminal&#40;&#41;;
   &#125;
   
   FD_ZERO&#40;&rfds&#41;;
   FD_SET&#40;0, &rfds&#41;;
   if &#40;select&#40;1, &rfds, NULL, NULL, NULL&#41;>0&#41;
	 return getchar&#40;&#41;;
   else&#123;
	  printf&#40;"wincompat.h&#58; select&#40;&#41; on fd 0 failed\n"&#41;;
	  return 0xDeadBeef;
   &#125;	 
&#125;

#endif