【发布时间】:2013-11-16 20:33:21
【问题描述】:
我在 Windows 上编写了一个代码,使用来自 stdio 的函数 getch()。问题是我必须使用不需要按回车的输入功能。
我的代码可以在 Windows 上编译并完美运行。但是,这个任务必须在 linux 上运行,当我尝试这样做时,它告诉我它无法识别 getch()(或 _getch())。
问题是根据分配,我不能使用其他包含但stdio.h(添加标志也是如此),所以我不能使用curses.h来解决这个问题。
termios.h之类的我也不能用,没学过。
我该如何解决这个问题?还有其他选择吗?
谢谢
【问题讨论】:
-
getchar()函数可以检索单个字符,但在按下回车之前(默认情况下)它不会收到答案。您必须禁用缓冲才能超越该限制,但是您的问题表明您不允许这样做 - 这意味着您无法完成此任务。 -
似乎答案是“无法完成”,但如果这是教授的任务,可能会有一些想法。也许粘贴说明,以便有人可以为您理解它们。
-
我已经完成了很大一部分的作业,在使用getch功能并在windows上运行时,我只有linux的问题。指令说“从用户那里获取一个基数,(基数可以是 2-36 范围内的 int,当 a=10,b=11,...,z=35,类似于十六进制)。然后在这个基数,在任何两位数之间不输入(例如输入 - 基数>=17 中的 1g5)。"
-
我读到的方式是一个输入行是“17 1g5”,另一个输入行是“16 ff”等等。每行之间都有一个输入。我不敢相信他们希望您获得无缓冲的输入。所以,阅读每一行,得到基数,然后得到数字。然后再找一行广告再做一次,直到没有更多的行。
-
输入规则是这样的,我在一行中得到基数(从 2 到 36 的数字,这里没有问题),然后输入,所以我只使用 scanf。问题是之后,我得到了基础并输入,现在我必须得到未知数量的字符,它们之间没有输入。这是程序运行的示例:“ 28 /new line/ 3a2 /new line/ 2634 ” 第一行是基数,第二个数是基数,第三个是基数 10。