第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()函数输入数据。其具体代码如下:

img46

运行结果如图4.1所示。

img47

图4.1 用cgets()函数输入字符串 4.2 clreol()——清除字符到行末函数 clreol()函数

实用程度:★★☆☆☆

实例位置:配套资源\SL\04\02

clreol()函数用于在文本窗口中清除字符到行末。

语法

void clreol ( void );

clreol()函数没有参数。

clreol()函数没有返回值。

示例

本示例演示了clreol()函数的使用方法,使用该函数将光标当前所在行光标后的所有字符内容清除。其具体代码如下:

img48

运行结果如图4.2所示。

img49

图4.2 clreol()函数的执行结果 4.3 clrscr()——清除文本模式窗口函数 clrscr()函数

实用程度:★★★★☆

实例位置:配套资源\SL\04\03

clrscr()函数用于清除文本模式窗口。

语法

void clrscr ( void ) ;

clrscr()函数没有参数。

clrscr()函数没有返回值。

示例

本示例演示了clrscr()函数的使用方法,在输出窗体中输出3行字符串和一行提示信息,按Enter键后将会清除窗体中的全部内容,并输出提示信息。其具体代码如下:

img50

运行结果如图4.3所示。

img51

图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()函数格式化输出内容。其具体代码如下:

img52

运行结果如图4.4所示。

img53

图4.4 使用cprintf()函数输出 4.5 cputs()——字符串输出到屏幕函数 cputs()函数

实用程度:★★☆☆☆

实例位置:配套资源\SL\04\05

cputs()函数用于将字符写到输出窗体中。

语法

void cputs(const char *string);

cputs()函数的语法参数说明如下:

参数string为要输出的字符串。

cputs()函数没有返回值。

示例

本示例演示用cputs()函数将字符串“www.mingribook.com”输出到窗体。其具体代码如下:

img54

img55

运行结果如图4.5所示。

img56

图4.5 cputs()的输出结果 4.6 cscanf()——格式化输入函数 cscanf()函数

实用程度:★★☆☆☆

实例位置:配套资源\SL\04\06

cscanf()函数用于从控制台的格式化输入。

语法

int cscanf(char *format, argument, ……);

cscanf()函数的语法参数说明如下:

参数format为格式字符串。

参数argument为接收数据的变量地址。

cscanf()函数的返回值:输入数据的数量。

示例

本示例演示用cscanf()函数输入商品价格和数量,求总金额的计算过程。其具体代码如下:

img57

运行结果如图4.6所示。

img58

图4.6 由价格和数量计算总金额 4.7 delline()——删除行函数 delline()函数

实用程度:★★☆☆☆

实例位置:配套资源\SL\04\07

delline()函数用于在文本窗口中删除一行。

语法

double delline ( void ) ;

delline()函数没有参数。

delline()函数没有返回值。

示例

本示例演示delline()函数的使用方法。其具体代码如下:

img59

运行结果如图4.7所示。

img60

图4.7 delline()函数的执行结果 4.8 getch()——无回显字符输入函数 getch()函数

实用程度:★★★☆☆

实例位置:配套资源\SL\04\08

getch()函数用于从控制台输入一个字符,并且输入时屏幕不显示输入的字符。

语法

int getch(void);

getch()函数没有参数。

getch()函数的返回值:输入的字符。

示例

本示例演示用getch()函数输入一个字符。其具体代码如下:

img61

运行结果如图4.8所示。

img62

图4.8 输入字符时没有任何显示 4.9 getche()——有回显字符输入函数 getche()函数

实用程度:★★★☆☆

实例位置:配套资源\SL\04\09

getche()函数用于从控制台输入一个字符,并且输入时屏幕显示输入的字符。

语法

int getche(void);

getche()函数没有参数。

getche()函数的返回值:输入的字符。

示例

本示例演示用getche()函数输入一个字符。其具体代码如下:

img63

运行结果如图4.9所示。

img64

图4.9 有回显的字符输入 4.10 getpass()——以密码形式输入函数 getpass()函数

实用程度:★★☆☆☆

实例位置:配套资源\SL\04\10

getpass()函数用于从控制台输入一行字符串,并且输入时不显示输入的字符串。此函数适用于密码的输入。

语法

char getpass (const char prompt);

getpass()函数的语法参数说明如下:

参数prompt为提示字符串地址。

getpass()函数的返回值:输入字符串地址。

示例

本示例演示用getpass()函数输入密码。其具体代码如下:

img65

运行结果如图4.10所示。

img66

图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 参数说明

img67

gettext()函数的返回值:成功返回非0值。

示例

本示例演示用gettext()和puttext()函数实现屏幕内容的复制。其具体代码如下:

img68

运行结果如图4.11所示。

img69

图4.11 gettext()函数的执行结果 4.12 gettextinfo()——获取文本模式的屏幕信息函数 gettextinfo()函数

实用程度:★★☆☆☆

实例位置:配套资源\SL\04\12

gettextinfo()函数用于获取文本模式的屏幕数据块信息。

语法

void gettextinfo(struct text_info *r);

gettextinfo()函数的语法参数说明如下:

参数r为屏幕信息的结构体。

gettextinfo()函数没有返回值。

示例

本示例演示用gettextinfo()函数获取文本模式的屏幕信息。其具体代码如下:

img70

运行结果如图4.12所示。

img71

图4.12 屏幕数据块属性 4.13 gotoxy()——设置光标函数 gotoxy()函数

实用程度:★★★★☆

实例位置:配套资源\SL\04\13

gotoxy()函数用于将光标移动到指定位置。

语法

void gotoxy(int x, int y);

gotoxy()函数的语法参数说明如下:

参数x为移动到位置的横坐标。

参数y为移动到位置的纵坐标。

gotoxy()函数没有返回值。

示例

本示例演示用gotoxy()函数定位光标,实现输入价格和数量求金额的过程。其具体代码如下:

img72

运行结果如图4.13所示。

img73

图4.13 输入价格和数量求金额 4.14 highvideo()——高亮显示文本函数 highvideo()函数

实用程度:★★☆☆☆

实例位置:配套资源\SL\04\14

highvideo()函数用于高亮显示文本,它只影响控制台输出(如cprint()、cputs()),不影响标准设备输出(如printf()、puts())。

语法

void highvideo ( void );

highvideo()函数没有参数。

highvideo()函数没有返回值。

示例

本示例演示用highvideo()函数实现高亮度的文本输出。其具体代码如下:

img74

运行结果如图4.14 所示。

img75

图4.14 不同屏幕亮度的显示结果 4.15 insline()——插入空行函数 insline()函数

实用程度:★★☆☆☆

实例位置:配套资源\SL\04\15

insline()函数用于在光标所在处插入空行,插入行后的内容自动下移。

语法

void insline( void );

示例

本示例演示用insline()函数插入空行。其具体代码如下:

img76

运行结果如图4.15 所示。

img77

图4.15 insline()函数的执行结果 4.16 kbhit()——检查键盘按键函数 kbhit()函数

实用程度:★★☆☆☆

实例位置:配套资源\SL\04\16

kbhit()函数用于检查键盘是否有输入。

语法

int kbhit ( void );

kbhit()函数没有参数。

kbhit()函数的返回值:没有按键时返回0,否则返回-1。

示例

本示例演示用kbhit()函数在一个持续运行的程序中接收键盘输入的方法。此函数可用于俄罗斯方块、贪吃蛇等键盘控制游戏的程序中。其具体代码如下:

img78

运行结果如图4.16所示。

img79

图4.16 按Esc键时退出程序 4.17 lowvideo()——低亮显示文本函数 lowvideo()函数

实用程度:★★☆☆☆

实例位置:配套资源\SL\04\17

lowvideo()函数用于低亮显示文本,它只影响控制台输出,不影响标准设备输出。

语法

void lowvideo ( void );

lowvideo()函数没有参数。

lowvideo()函数没有返回值。

示例

本示例演示用lowvideo()函数实现不同亮度的文本输出。其具体代码如下:

img80

img81

运行结果如图4.17所示。

img82

图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 参数说明

img83

movetext()函数的返回值:成功返回非0值。

示例

本示例演示用movetext()函数移动屏幕文件。其具体代码如下:

img84

运行结果如图4.18 所示。

img85

图4.18 movetext()函数的执行结果 4.19 normvideo()——正常亮显示文本函数 normvideo()函数

实用程度:★★☆☆☆

实例位置:配套资源\SL\04\19

normvideo()函数用于正常亮显示文本,它只影响控制台输出,不影响标准设备输出。

语法

void normvideo ( void );

normvideo()函数没有参数。

normvideo()函数没有返回值。

示例

本示例演示用normvideo()函数实现不同亮度的文本输出。其具体代码如下:

img86

运行结果如图4.19所示。

img87

图4.19 不同屏幕亮度的显示结果 4.20 putch()——字符输出函数 putch()函数

实用程度:★★★☆☆

实例位置:配套资源\SL\04\20

putch()函数用于输出字符。

语法

int putch(int ch);

putch()函数的语法参数说明如下:

参数ch表示要输出的字符。

putch()函数没有返回值。

示例

本示例实现在屏幕上输出一个红底绿字的字符。其具体代码如下:

include<stdio.h>   /引用标准输入/输出函数库/

include<conio.h>   /引用控制台输入/输出函数库/

img88

运行结果如图4.20所示。

img89

图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 参数说明

img90

puttext()函数的返回值:成功返回非0值。

示例

本示例演示用gettext()和puttext()函数实现屏幕内容的复制。其具体代码如下:

img91

img92

运行结果如图4.21所示。

img93

图4.21 puttext()函数的执行结果 4.22 textattr()——设置文本属性函数 textattr()函数

实用程度:★★☆☆☆

实例位置:配套资源\SL\04\22

textattr()函数用于设置文本模式下的文本前景色和背景色属性。

语法

void textattr(int newattr);

textattr()函数的语法参数说明如下:

参数newattr为文本属性,其中高字节是背景色,低字节是前景色。

textattr()函数没有返回值。

示例

本示例演示用textattr()函数实现文本属性的设置。其具体代码如下:

img94

img95

运行结果如图4.22 所示。

img96

图4.22 设置文本属性 4.23 textbackground()——文本背景色选择函数 textbackground()函数

实用程度:★★☆☆☆

实例位置:配套资源\SL\04\23

textbackground()函数用于设置文本模式下的背景颜色。

语法

void textbackground(int newcolor);

textbackground()函数的语法参数说明如下:

参数newcolor为背景颜色。

textbackground()函数没有返回值。

示例

本示例演示用textbackground()函数设置背景颜色。其具体代码如下:

img97

运行结果如图4.23 所示。

img98

图4.23 设置背景颜色 4.24 textcolor()——文本字符颜色选择函数 textcolor()函数

实用程度:★★★☆☆

实例位置:配套资源\SL\04\24

textcolor()函数用于设置文本模式下的文本颜色。

语法

void textcolor(int newcolor);

textcolor()函数的语法参数说明如下:

参数newcolor为文本颜色。

textcolor()函数没有返回值。

示例

本示例演示用textcolor()函数设置文本颜色。其具体代码如下:

img99

运行结果如图4.24所示。

img100

图4.24 设置文本颜色 4.25 textmode()——文本模式设置函数 textmode()函数

实用程度:★★☆☆☆

实例位置:配套资源\SL\04\25

textmode()函数用于设置文本模式。

语法

void textmode (int newmode );

textmode()函数的语法参数说明如下:

参数newmode为新屏幕模式。

示例

本示例演示用textmode()实现在BW40、BW80两种模式下显示字符的变化,程序执行结果只能在DOS全屏模式下才能观察到,窗口方式没有变化。其具体代码如下:

img101

运行结果如图4.25所示。

img102

图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”。其具体代码如下:

img103

运行结果如图4.26所示。

img104

图4.26 用ungetch()函数把一个字符退回缓冲区 4.27 wherex()——返回水平光标位置函数 wherex()函数

实用程度:★★★☆☆

实例位置:配套资源\SL\04\27

wherex()函数用于获取光标横坐标位置。

语法

int whrex( void );

wherex()函数没有参数。

wherex()函数的返回值:光标横坐标位置。

示例

本示例演示用wherex()函数把光标定位在上一输出位置下一行同一列位置的方法。其具体代码如下:

img105

运行结果如图4.27所示。

img106

图4.27 用wherex()和wherey()函数获取光标位置 4.28 wherey()——返回垂直光标位置函数 wherey()函数

实用程度:★★★☆☆

实例位置:配套资源\SL\04\28

wherey()函数用于获取光标纵坐标位置。

语法

int whrey( void );

wherey()函数没有参数。

wherey()函数的返回值:光标纵坐标位置。

示例

本示例演示用wherey()函数把光标定位在上一输出位置下一行同一列位置的方法。其具体代码如下:

img107

img108

运行结果如图4.28 所示。

img109

图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 参数说明

img110

window()函数没有返回值。

示例

本示例演示用window()函数把整个屏幕定义成4个小窗口,每个小窗口有独立的坐标系统。其具体代码如下:

img111

img112

运行结果如图4.29所示。

img113

图4.29 用window()函数把整个屏幕分成4个独立小窗口