On Aug 18, 2006, at 8:09 AM, Haihua Lin wrote:


Hi all,

How to read one char from stdin and return immediately?
I mean there is no need to wait the user input a return.

For example:
Print "y/n: "
Users input y, return immediately, no return need.

I have tried code as below, but it didn't work for me.

import IO

main = do
         hSetBuffering stdout NoBuffering
         putStr   "Y/N: "
         c <- getChar
         putStr ("Your input is " ++ show c++".\n")

Thanks very much.


I do it this way; it should keep your buffering state consistent even if exceptions occur.


 bracket (hGetBuffering stdin) (hSetBuffering stdin) $ \_ -> do
      hSetBuffering stdin NoBuffering
      c <- hGetChar stdin
      return c


Best regards,
Haihua Lin



Rob Dockins

Speak softly and drive a Sherman tank.
Laugh hard; it's a long way to the bank.
          -- TMBG



_______________________________________________
Haskell mailing list
[email protected]
http://www.haskell.org/mailman/listinfo/haskell

Reply via email to