delorie.com/archives/browse.cgi   search  
Mail Archives: djgpp/2004/07/20/03:45:45

X-Authentication-Warning: delorie.com: mail set sender to djgpp-bounces using -f
From: Martin Ambuhl <mambuhl AT earthlink DOT net>
Newsgroups: comp.os.msdos.djgpp
Subject: Re: Function kbhit()?
Date: Tue, 20 Jul 2004 03:42:09 -0400
Lines: 60
Message-ID: <2m40mjFhp3nlU1@uni-berlin.de>
References: <2m3hjoFibqajU1 AT uni-berlin DOT de> <7494-Tue20Jul2004073651+0300-eliz AT gnu DOT org> <2m3odtFhufc2U1 AT uni-berlin DOT de>
Mime-Version: 1.0
X-Trace: news.uni-berlin.de PuXQKh4vCs0U4DS1lgobPAaCAXGG7wVK8a7JAvyqs81HZUmPjf
User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.7) Gecko/20040616
X-Accept-Language: en-us, en, de, fr, ru, zh, ja
In-Reply-To: <2m3odtFhufc2U1@uni-berlin.de>
To: djgpp AT delorie DOT com
DJ-Gateway: from newsgroup comp.os.msdos.djgpp
Reply-To: djgpp AT delorie DOT com
Errors-To: nobody AT delorie DOT com
X-Mailing-List: djgpp AT delorie DOT com
X-Unsubscribes-To: listserv AT delorie DOT com

Fausto Arinos de A. Barbuto wrote:

> "Eli Zaretskii" <eliz AT gnu DOT org> wrote in message
> news:7494-Tue20Jul2004073651+0300-eliz AT gnu DOT org...
> 
>>>From: "Fausto Arinos de A. Barbuto" <fbarbuto2002 DOT no AT w1 DOT ca DOT vip DOT scd DOT yahoo DOT com>
>>>Newsgroups: comp.os.msdos.djgpp
>>>Date: Mon, 19 Jul 2004 21:24:39 -0600
>>>
>>>    I am porting an old C code to GCC. It works very well with Borland C 3.1
>>>    and although it compiles and runs with gcc, it doesn't work as intended.
>>>    After much tinkering with the code, I found out that the problem is in a
>>>    statement that contains the kbhit() function. GCC didn't complain about
>>>    it during compilation though, hence I assume that kbhit() exists in GCC
>>>    -- it is I who can't use it properly. Any hints? Your help will be very much
>>>    appreciated.
> 
> 
>>Yes, DJGPP does have kbhit.  But without seeing the code and knowing
>>what exactly do you mean by ``doesn't work as intended'' it is hard
>>to tell what is wrong.
> 
> 
>     Thanks for replying, Eli. The piece of code where kbhit() is being used is a
> short function, as shown below:
> 
> void check_event(int *key)
> {
>     while (kbhit()) getch();
>     *key = bioskey(0);
> }
> 
>     Called at this program segment:
> 
>         [...]
>         check_event(&cmd);
>         p = toupper(cmd);
>         if (p == 'R')
>             return;
>         if (p == 'A') {
>             build_amort(v);
>             display_amort();
>             factor_header();
>             aflg = 0;
>             fflg = 1;
>             return;
>         }
>         [...]
> 
>     It should then (in theory) capture a keyboard hit, make it uppercase
>     and then decide what to do with the result.
> 
>     Now giving the code a closer look, it is quite possible that the error
>     is due to the function bioskey(). Maybe.
> 

*Maybe* it's because when !kbhit(), you don't call getch() but you do 
store a value into *key.  This meaningless value is then supplied to 
toupper() and assigned to p.

- Raw text -


  webmaster     delorie software   privacy  
  Copyright © 2019   by DJ Delorie     Updated Jul 2019