为什么要使用conio.h?

14

我经常看到人们在C和C++中使用conio.h的头文件,尽管与标准库函数相比,我看不出在使用conio.h内的函数方面有任何主要优点。而且,conio.h还有依赖于Windows/MS-DOS环境以及不是C标准的缺点。

  • conio.h函数的选择原因是什么?
  • conio.h内的函数提供了标准C库函数不能提供的内容吗?
  • 为什么要选择conio库?

1
它有一种简单的方法来获取原始键盘输入。 - stark
代码可以确定数据是否在“stdin”中。标准C没有stdin内的时间概念。“stdin”只是一系列字节。 - chux - Reinstate Monica
1
标准的C库中没有类似于kbhit的等效函数。 - lurker
4
令我惊讶的是,仍有很多人在使用Turbo C++。 - Shawn
1
@Ayxan -- C标准库中哪些函数类似于kbhit() - ad absurdum
显示剩余4条评论
2个回答

27
conio.h头文件是Turbo C特有的,它比最早的C标准要早几年。其中包含一些特定于DOS命令行的例程。一个经常使用的函数是getch,它允许读取一个字符而无需按下Enter键。它还包含gotoxy,该函数允许将光标放置在终端的特定位置。
总的来说,像这样与终端通信的方法非常依赖于操作系统,因此每个操作系统都有自己(通常不可移植的)的方法来执行此操作。
这与stdio.h中的函数形成对比,后者包含printf、scanf和getchar等函数,无论使用何种类型的控制台都可以工作。

3
<conio.h>是由MSVC支持的。在较新的版本中,已经更新了声明函数的名称,遵循实现特定名称的标准C规则,通过添加前导下划线(例如_getch)。 - 1201ProgramAlarm

4

为什么选择使用conio.h库中的函数?

它提供一些标准库中没有的函数,而且使用这些函数的人并不关心在其他系统上的移植性。

与标准C库的函数相比,conio.h库中的函数提供了什么?

以下是一些标准库中没有替代品的函数,可能还有其他函数:

kbhit
clrscr
getch
getche

标准库可能会提供这些功能,但实际上并没有提供。

为什么要选择conio库?

因为你已经学会了如何使用它,并且你不(知道如何)关心在其他系统上移植。


3
现代化的替代品可能是ncurses - Jesper Juhl
1
@JesperJuhl ncurses支持Windows吗?PDCurses是一个支持Windows的curses端口。 - eerorika
另一个替代方案可能是使用窗口或图形框架。 - Thomas Matthews
Qt 可以跨平台使用,有时可以替代一些功能。 - Ayxan Haqverdili

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接