这是我的代码
main :: IO ()
main = do
putStr "Enter user name: "
userName <- getLine
putStr "Enter filename: "
fileName <- getLine
contents <- readFile fileName
--------SOME CODES HERE------------------
putStrLn ("TITLES AND RATINGS OF FILMS BY " ++ userName)
-----------SOME CODES HERE-----------------
putStr "ENTER 'Y' TO SAVE CHANGES AND EXIT: "
ex <- getChar
if ex /= 'Y' then
main
else do
writeFile fileName (show film')
exitWith ExitSuccess
当我从'Y'输入任何值时,我得到:
输入用户名:输入文件名:_
而不仅仅是
输入用户名:_
任何人都知道为什么会这样吗?
答案 0 :(得分:4)
getChar
只能读取一个字符。但是你按了回车键,所以你也输入了一个换行符,当你递归调用getLine
时,它会被第一个main
读取。
只需使用getLine
代替getChar
,并检查它是/= "Y"
。