在Linux上,<conio.h>头文件在哪里?为什么我找不到<conio.h>?

94

17
你找不到它是因为这是一个DOS头! - David Heffernan
@DavidHeffernan 这是说在Linux中我们不需要conio.h吗? - Vicrobot
2
@Vicrobot,它在Linux上不存在,因此你不需要它。 - David Heffernan
4个回答

124

conio.h是一个C头文件,用于旧的MS-DOS编译器创建文本用户界面。针对其他操作系统(例如基于Linux的32位Windows和OS/2)的编译器通过其他头文件和库提供等效功能。

#include <curses.h>将为您提供几乎所有conio.h提供的功能。

首先需要安装“ncurses”。

如果您使用的是Apt软件包管理器:

sudo apt-get install libncurses5-dev libncursesw5-dev

如果您使用 rpm

sudo yum install ncurses-devel ncurses

关于getch,请参考"NCURSES编程HOWTO"文章。


11
我遇到了错误:“fatal error: curses.h: No such file or directory”,该怎么办? - sumitkanoje
4
这意味着尚未安装 curses 库,它不是标准库。您需要在线查找它(例如,Ncurses 是一种免费的 GPL 实现)。 - oligofren
使用 cursesncurses 的程序通常会接管整个(文本)屏幕,这可能是您想要的,也可能不是。 - Keith Thompson
即使我也遇到了错误。 permutation.c:2:19: 致命错误: curses.h: 没有那个文件或目录 #include<curses.h> ^ 编译终止。 - Vinay Guru
1
每个人都说 curses,但 curses 的问题在于它必须接管你的控制台环境。如果你已经有一个控制台程序,你需要重写整个程序以使用 curses,因为 curses 管理自己的屏幕。为什么我们不能只移植 conio 呢? - Dmytro

26

8

这是因为它不存在,因为它被限制在Windows中。

相反,使用标准函数<stdio.h>中的getc等。

如果要编写基于控制台的图形用户界面,则建议使用ncurses库,但我认为这不是你想要的。


1
没对我起作用。 - Scott
@Scott 你遇到了什么问题?你无法包含#include <stdio.h>吗? - VLL

7
一种常用的具有类似功能的Linux库是 ncurses

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