1. 概述
conio.h是C语言中专门为DOS/Windows编写的头文件,提供一些与控制台IO有关的函数。它完全没有标准化,但是一些编译器/vendor支持该头文件。
conio.h已经被淘汰,仅存在于老旧的代码中。现代操作系统(如Linux、macOS、Windows)提供了更为强大和稳定的终端和图形用户界面 API,如ncurses库和Windows API。
2. 使用
2.1 包含头文件
要使用conio.h提供的函数,需要在程序中包含这个头文件:
#include <conio.h>
这个头文件中定义了许多与控制台IO有关的函数和变量。
2.2 控制台输入
conio.h中提供了一些辅助控制台输入的函数,如下:
int getch(void);
int getche(void);
int kbhit(void);
getch函数用于读取控制台输入的字符。它不显示输入的字符,而是直接读取到输入缓冲区中的字符,只有在用户按下回车键时才返回读取到的所有字符。例如:
char c = getch();
printf("%c", c);
getche函数与getch函数类似,不同之处在于它会显示输入字符(在控制台上),然后将字符存储到输入缓冲区中。例如:
char c = getche();
printf("%c", c);
kbhit函数用于判断输入缓冲区中是否有字符键入。如果缓冲区中有字符键入,返回非零值(true);否则返回零值(false)。例如:
if(kbhit()){
char c = getch();
printf("%c",c);
}
2.3 控制台输出
conio.h中提供了一些辅助控制台输出的函数,如下:
void clrscr(void);
void gotoxy(int x, int y);
clrscr函数用于清除控制台屏幕上的所有字符。例如:
clrscr();
gotoxy函数用于将光标移动到指定的x、y坐标处。在DOS/Windows系统中,操作控制台输出是可以控制光标的。例如:
gotoxy(10, 10); //将光标移动到第10行,第10列的位置
printf("Hello world!");
3. 示例
下面是一个使用conio.h的示例程序,实现了在控制台上显示一条跑马灯效果的字符串:
#include <stdio.h>
#include <conio.h>
#include <string.h>
const int interval = 100;
int main(){
char msg[] = "Hello, world!";
int len = strlen(msg);
int i = 0;
while(1){
putchar('\r');
for(int j = 0; j < i; j++){
putchar(' ');
}
printf("%s", msg + i);
fflush(stdout);
if(++i == len){
i = 0;
}
Sleep(interval);
}
return 0;
}
该程序无限循环,将字符串从左到右循环滚动。
4. 总结
在现代操作系统中,控制台IO已经被视为过时和不安全的操作,我们应该使用更加稳定和强大的API。conio.h是与DOS/Windows系统相关的头文件,提供了一些辅助控制台IO的函数,包括输入和输出。这些函数可能对于老旧的代码有用处,但现代编程中不建议使用这些函数。