第4章 控制台输入/输出函数库:conio.h 在程序设计中,常常需要进行控制台输入/输出等操作。C语言专门提供了一个针对控制台输入/输出操作的函数库——conio.h。 4.1 cgets()——从控制台输入字符串函数 cgets()函数
实用程度:★★☆☆☆
实例位置:配套资源\SL\04\01
cgets()函数用于从控制台输入一行字符串。
语法
char cgets(charstr);
cgets()函数的语法参数说明如下:
参数str为保存数据的地址。str[0]表示要预先存入最大字符串长度,执行后str[1]表示实际输入字符个数。
cgets()函数的返回值:实际存储数据的地址,即str+2。
示例
本示例演示用cgest()函数输入数据。其具体代码如下:
运行结果如图4.1所示。
图4.1 用cgets()函数输入字符串 4.2 clreol()——清除字符到行末函数 clreol()函数
实用程度:★★☆☆☆
实例位置:配套资源\SL\04\02
clreol()函数用于在文本窗口中清除字符到行末。
语法
void clreol ( void );
clreol()函数没有参数。
clreol()函数没有返回值。
示例
本示例演示了clreol()函数的使用方法,使用该函数将光标当前所在行光标后的所有字符内容清除。其具体代码如下:
运行结果如图4.2所示。
图4.2 clreol()函数的执行结果 4.3 clrscr()——清除文本模式窗口函数 clrscr()函数
实用程度:★★★★☆
实例位置:配套资源\SL\04\03
clrscr()函数用于清除文本模式窗口。
语法
void clrscr ( void ) ;
clrscr()函数没有参数。
clrscr()函数没有返回值。
示例
本示例演示了clrscr()函数的使用方法,在输出窗体中输出3行字符串和一行提示信息,按Enter键后将会清除窗体中的全部内容,并输出提示信息。其具体代码如下:
运行结果如图4.3所示。
图4.3 clrscr()函数的执行结果 4.4 cprintf()——格式化输出到屏幕函数 cprintf()函数
实用程度:★★☆☆☆
实例位置:配套资源\SL\04\04
cprintf()函数提供格式化输出到屏幕功能,与printf()函数的功能类似。在cprintf()函数中,\r\n相当于printf()中的\n。
语法
int cprintf(const char * format, ……);
cprintf()函数的语法参数说明如下:
参数format为格式字符串。
参数……为输出数据。
cprintf()函数的返回值:输入字符个数。
示例
本示例演示用cprintf()函数格式化输出内容。其具体代码如下:
运行结果如图4.4所示。
图4.4 使用cprintf()函数输出 4.5 cputs()——字符串输出到屏幕函数 cputs()函数
实用程度:★★☆☆☆
实例位置:配套资源\SL\04\05
cputs()函数用于将字符写到输出窗体中。
语法
void cputs(const char *string);
cputs()函数的语法参数说明如下:
参数string为要输出的字符串。
cputs()函数没有返回值。
示例
本示例演示用cputs()函数将字符串“www.mingribook.com”输出到窗体。其具体代码如下:
运行结果如图4.5所示。
图4.5 cputs()的输出结果 4.6 cscanf()——格式化输入函数 cscanf()函数
实用程度:★★☆☆☆
实例位置:配套资源\SL\04\06
cscanf()函数用于从控制台的格式化输入。
语法
int cscanf(char *format, argument, ……);
cscanf()函数的语法参数说明如下:
参数format为格式字符串。
参数argument为接收数据的变量地址。
cscanf()函数的返回值:输入数据的数量。
示例
本示例演示用cscanf()函数输入商品价格和数量,求总金额的计算过程。其具体代码如下:
运行结果如图4.6所示。
图4.6 由价格和数量计算总金额 4.7 delline()——删除行函数 delline()函数
实用程度:★★☆☆☆
实例位置:配套资源\SL\04\07
delline()函数用于在文本窗口中删除一行。
语法
double delline ( void ) ;
delline()函数没有参数。
delline()函数没有返回值。
示例
本示例演示delline()函数的使用方法。其具体代码如下:
运行结果如图4.7所示。
图4.7 delline()函数的执行结果 4.8 getch()——无回显字符输入函数 getch()函数
实用程度:★★★☆☆
实例位置:配套资源\SL\04\08
getch()函数用于从控制台输入一个字符,并且输入时屏幕不显示输入的字符。
语法
int getch(void);
getch()函数没有参数。
getch()函数的返回值:输入的字符。
示例
本示例演示用getch()函数输入一个字符。其具体代码如下:
运行结果如图4.8所示。
图4.8 输入字符时没有任何显示 4.9 getche()——有回显字符输入函数 getche()函数
实用程度:★★★☆☆
实例位置:配套资源\SL\04\09
getche()函数用于从控制台输入一个字符,并且输入时屏幕显示输入的字符。
语法
int getche(void);
getche()函数没有参数。
getche()函数的返回值:输入的字符。
示例
本示例演示用getche()函数输入一个字符。其具体代码如下:
运行结果如图4.9所示。
图4.9 有回显的字符输入 4.10 getpass()——以密码形式输入函数 getpass()函数
实用程度:★★☆☆☆
实例位置:配套资源\SL\04\10
getpass()函数用于从控制台输入一行字符串,并且输入时不显示输入的字符串。此函数适用于密码的输入。
语法
char getpass (const char prompt);
getpass()函数的语法参数说明如下:
参数prompt为提示字符串地址。
getpass()函数的返回值:输入字符串地址。
示例
本示例演示用getpass()函数输入密码。其具体代码如下:
运行结果如图4.10所示。
图4.10 输入密码时没有任何显示 4.11 gettext()——文本复制函数 gettext()函数
实用程度:★★☆☆☆
实例位置:配套资源\SL\04\11
gettext()函数用于把字符模式下的屏幕信息复制到一个内存变量。
语法
int gettext(int left, int top, in right, int bottom, void *destin);
gettext()函数的语法参数说明如表4.1所示。
表4.1 参数说明
gettext()函数的返回值:成功返回非0值。
示例
本示例演示用gettext()和puttext()函数实现屏幕内容的复制。其具体代码如下:
运行结果如图4.11所示。
图4.11 gettext()函数的执行结果 4.12 gettextinfo()——获取文本模式的屏幕信息函数 gettextinfo()函数
实用程度:★★☆☆☆
实例位置:配套资源\SL\04\12
gettextinfo()函数用于获取文本模式的屏幕数据块信息。
语法
void gettextinfo(struct text_info *r);
gettextinfo()函数的语法参数说明如下:
参数r为屏幕信息的结构体。
gettextinfo()函数没有返回值。
示例
本示例演示用gettextinfo()函数获取文本模式的屏幕信息。其具体代码如下:
运行结果如图4.12所示。
图4.12 屏幕数据块属性 4.13 gotoxy()——设置光标函数 gotoxy()函数
实用程度:★★★★☆
实例位置:配套资源\SL\04\13
gotoxy()函数用于将光标移动到指定位置。
语法
void gotoxy(int x, int y);
gotoxy()函数的语法参数说明如下:
参数x为移动到位置的横坐标。
参数y为移动到位置的纵坐标。
gotoxy()函数没有返回值。
示例
本示例演示用gotoxy()函数定位光标,实现输入价格和数量求金额的过程。其具体代码如下:
运行结果如图4.13所示。
图4.13 输入价格和数量求金额 4.14 highvideo()——高亮显示文本函数 highvideo()函数
实用程度:★★☆☆☆
实例位置:配套资源\SL\04\14
highvideo()函数用于高亮显示文本,它只影响控制台输出(如cprint()、cputs()),不影响标准设备输出(如printf()、puts())。
语法
void highvideo ( void );
highvideo()函数没有参数。
highvideo()函数没有返回值。
示例
本示例演示用highvideo()函数实现高亮度的文本输出。其具体代码如下:
运行结果如图4.14 所示。
图4.14 不同屏幕亮度的显示结果 4.15 insline()——插入空行函数 insline()函数
实用程度:★★☆☆☆
实例位置:配套资源\SL\04\15
insline()函数用于在光标所在处插入空行,插入行后的内容自动下移。
语法
void insline( void );
示例
本示例演示用insline()函数插入空行。其具体代码如下:
运行结果如图4.15 所示。
图4.15 insline()函数的执行结果 4.16 kbhit()——检查键盘按键函数 kbhit()函数
实用程度:★★☆☆☆
实例位置:配套资源\SL\04\16
kbhit()函数用于检查键盘是否有输入。
语法
int kbhit ( void );
kbhit()函数没有参数。
kbhit()函数的返回值:没有按键时返回0,否则返回-1。
示例
本示例演示用kbhit()函数在一个持续运行的程序中接收键盘输入的方法。此函数可用于俄罗斯方块、贪吃蛇等键盘控制游戏的程序中。其具体代码如下:
运行结果如图4.16所示。
图4.16 按Esc键时退出程序 4.17 lowvideo()——低亮显示文本函数 lowvideo()函数
实用程度:★★☆☆☆
实例位置:配套资源\SL\04\17
lowvideo()函数用于低亮显示文本,它只影响控制台输出,不影响标准设备输出。
语法
void lowvideo ( void );
lowvideo()函数没有参数。
lowvideo()函数没有返回值。
示例
本示例演示用lowvideo()函数实现不同亮度的文本输出。其具体代码如下:
运行结果如图4.17所示。
图4.17 不同屏幕亮度的显示结果 4.18 movetext()——移动屏幕文本函数 movetext()函数
实用程度:★★☆☆☆
实例位置:配套资源\SL\04\18
movetext()函数用于把屏幕指定区域移到另一区域。
语法
int movetext(int left, int top, int right, int bottom, int destleft, int desttop);
movetext()函数的语法参数说明如表4.2所示。
表4.2 参数说明
movetext()函数的返回值:成功返回非0值。
示例
本示例演示用movetext()函数移动屏幕文件。其具体代码如下:
运行结果如图4.18 所示。
图4.18 movetext()函数的执行结果 4.19 normvideo()——正常亮显示文本函数 normvideo()函数
实用程度:★★☆☆☆
实例位置:配套资源\SL\04\19
normvideo()函数用于正常亮显示文本,它只影响控制台输出,不影响标准设备输出。
语法
void normvideo ( void );
normvideo()函数没有参数。
normvideo()函数没有返回值。
示例
本示例演示用normvideo()函数实现不同亮度的文本输出。其具体代码如下:
运行结果如图4.19所示。
图4.19 不同屏幕亮度的显示结果 4.20 putch()——字符输出函数 putch()函数
实用程度:★★★☆☆
实例位置:配套资源\SL\04\20
putch()函数用于输出字符。
语法
int putch(int ch);
putch()函数的语法参数说明如下:
参数ch表示要输出的字符。
putch()函数没有返回值。
示例
本示例实现在屏幕上输出一个红底绿字的字符。其具体代码如下:
include<stdio.h> /引用标准输入/输出函数库/
include<conio.h> /引用控制台输入/输出函数库/
运行结果如图4.20所示。
图4.20 putch()函数显示一个字符 4.21 puttext()——文本复制函数 puttext()函数
实用程度:★★★☆☆
实例位置:配套资源\SL\04\21
puttext()函数用于把由gettext()函数复制的屏幕信息显示到指定区域。
语法
int puttext(int left, int top, in right, int bottom, void *source);
puttext()函数的语法参数说明如表4.3所示。
表4.3 参数说明
puttext()函数的返回值:成功返回非0值。
示例
本示例演示用gettext()和puttext()函数实现屏幕内容的复制。其具体代码如下:
运行结果如图4.21所示。
图4.21 puttext()函数的执行结果 4.22 textattr()——设置文本属性函数 textattr()函数
实用程度:★★☆☆☆
实例位置:配套资源\SL\04\22
textattr()函数用于设置文本模式下的文本前景色和背景色属性。
语法
void textattr(int newattr);
textattr()函数的语法参数说明如下:
参数newattr为文本属性,其中高字节是背景色,低字节是前景色。
textattr()函数没有返回值。
示例
本示例演示用textattr()函数实现文本属性的设置。其具体代码如下:
运行结果如图4.22 所示。
图4.22 设置文本属性 4.23 textbackground()——文本背景色选择函数 textbackground()函数
实用程度:★★☆☆☆
实例位置:配套资源\SL\04\23
textbackground()函数用于设置文本模式下的背景颜色。
语法
void textbackground(int newcolor);
textbackground()函数的语法参数说明如下:
参数newcolor为背景颜色。
textbackground()函数没有返回值。
示例
本示例演示用textbackground()函数设置背景颜色。其具体代码如下:
运行结果如图4.23 所示。
图4.23 设置背景颜色 4.24 textcolor()——文本字符颜色选择函数 textcolor()函数
实用程度:★★★☆☆
实例位置:配套资源\SL\04\24
textcolor()函数用于设置文本模式下的文本颜色。
语法
void textcolor(int newcolor);
textcolor()函数的语法参数说明如下:
参数newcolor为文本颜色。
textcolor()函数没有返回值。
示例
本示例演示用textcolor()函数设置文本颜色。其具体代码如下:
运行结果如图4.24所示。
图4.24 设置文本颜色 4.25 textmode()——文本模式设置函数 textmode()函数
实用程度:★★☆☆☆
实例位置:配套资源\SL\04\25
textmode()函数用于设置文本模式。
语法
void textmode (int newmode );
textmode()函数的语法参数说明如下:
参数newmode为新屏幕模式。
示例
本示例演示用textmode()实现在BW40、BW80两种模式下显示字符的变化,程序执行结果只能在DOS全屏模式下才能观察到,窗口方式没有变化。其具体代码如下:
运行结果如图4.25所示。
图4.25 textmode()函数的执行结果 4.26 ungetch()——把字符退回键盘缓冲区函数 ungetch()函数
实用程度:★★☆☆☆
实例位置:配套资源\SL\04\26
ungetch()函数用于把字符退回键盘缓冲区。
语法
int ungetch (int ch);
ungetch()函数的语法参数说明如下:
参数ch为退回的字符。
ungetch()函数的返回值:退回的字符。
示例
本示例演示用ungetch()函数把一个字符退回键盘缓冲区,程序执行时输入“xyz”,如果程序中没有ungetch语句,c行为“z”,加入ungetch()函数把第二个字母“y”退回,则c行是退回的“y”。其具体代码如下:
运行结果如图4.26所示。
图4.26 用ungetch()函数把一个字符退回缓冲区 4.27 wherex()——返回水平光标位置函数 wherex()函数
实用程度:★★★☆☆
实例位置:配套资源\SL\04\27
wherex()函数用于获取光标横坐标位置。
语法
int whrex( void );
wherex()函数没有参数。
wherex()函数的返回值:光标横坐标位置。
示例
本示例演示用wherex()函数把光标定位在上一输出位置下一行同一列位置的方法。其具体代码如下:
运行结果如图4.27所示。
图4.27 用wherex()和wherey()函数获取光标位置 4.28 wherey()——返回垂直光标位置函数 wherey()函数
实用程度:★★★☆☆
实例位置:配套资源\SL\04\28
wherey()函数用于获取光标纵坐标位置。
语法
int whrey( void );
wherey()函数没有参数。
wherey()函数的返回值:光标纵坐标位置。
示例
本示例演示用wherey()函数把光标定位在上一输出位置下一行同一列位置的方法。其具体代码如下:
运行结果如图4.28 所示。
图4.28 用wherex()和wherey()函数获取光标位置 4.29 window()——定义活动文本窗口函数 window()函数
实用程度:★★☆☆☆
实例位置:配套资源\SL\04\29
window()函数用于在屏幕中定义活动小窗口。
语法
void window(int left, int top, int right, int bottom);
window()函数的语法参数说明如表4.4所示。
表4.4 参数说明
window()函数没有返回值。
示例
本示例演示用window()函数把整个屏幕定义成4个小窗口,每个小窗口有独立的坐标系统。其具体代码如下:
运行结果如图4.29所示。
图4.29 用window()函数把整个屏幕分成4个独立小窗口