C函数库大全 3

函数名: kbhit
功 能: 检查当前按下的键
用 法: int kbhit(void);
程序例:

#include

int main(void)
{
cprintf("Press any key to continue:");
while (!kbhit()) /* do nothing */ ;
cprintf("/r/nA key was pressed.../r/n");
return 0;
}

函数名: keep
功 能: 退出并继续驻留
用 法: void keep(int status, int size);
程序例:

/***NOTE:
This is an interrupt service routine. You
can NOT compile this program with Test
Stack Overflow turned on and get an
executable file which will operate
correctly. Due to the nature of this
function the formula used to compute
the number of paragraphs may not
necessarily work in all cases. Use with
care! Terminate Stay Resident (TSR)
programs are complex and no other support
for them is provided. Refer to the
MS-DOS technical documentation
for more information. */
#include
/* The clock tick interrupt */
#define INTR 0x1C
/* Screen attribute (blue on grey) */
#define ATTR 0x7900

/* reduce heaplength and stacklength
to make a smaller program in memory */
extern unsigned _heaplen = 1024;
extern unsigned _stklen = 512;

void interrupt ( *oldhandler)(void);

void interrupt handler(void)
{
unsigned int (far *screen)[80];
static int count;

/* For a color screen the video memory
is at B800:0000. For a monochrome
system use B000:000 */
screen = MK_FP(0xB800,0);

/* increase the counter and keep it
within 0 to 9 */
count++;
count %= 10;

/* put the number on the screen */
screen[0][79] = count + '0' + ATTR;

/* call the old interrupt handler */
oldhandler();
}

int main(void)
{

/* get the address of the current clock
tick interrupt */
oldhandler = getvect(INTR);

/* install the new interrupt handler */
setvect(INTR, handler);

/* _psp is the starting address of the
program in memory. The top of the stack
is the end of the program. Using _SS and
_SP together we can get the end of the
stack. You may want to allow a bit of
saftey space to insure that enough room
is being allocated ie:
(_SS + ((_SP + safety space)/16) - _psp)
*/
keep(0, (_SS + (_SP/16) - _psp));
return 0;
}



函数名: kbhit
功 能: 检查当前按下的键
用 法: int kbhit(void);
程序例:

#include

int main(void)
{
cprintf("Press any key to continue:");
while (!kbhit()) /* do nothing */ ;
cprintf("/r/nA key was pressed.../r/n");
return 0;
}


函数名: keep
功 能: 退出并继续驻留
用 法: void keep(int status, int size);
程序例:

/***NOTE:
This is an interrupt service routine. You
can NOT compile this program with Test
Stack Overflow turned on and get an
executable file which will operate
correctly. Due to the nature of this
function the formula used to compute
the number of paragraphs may not
necessarily work in all cases. Use with
care! Terminate Stay Resident (TSR)
programs are complex and no other support
for them is provided. Refer to the
MS-DOS technical documentation
for more information. */
#include
/* The clock tick interrupt */
#define INTR 0x1C
/* Screen attribute (blue on grey) */
#define ATTR 0x7900

/* reduce heaplength and stacklength
to make a smaller program in memory */
extern unsigned _heaplen = 1024;
extern unsigned _stklen = 512;

void interrupt ( *oldhandler)(void);

void interrupt handler(void)
{
unsigned int (far *screen)[80];
static int count;

/* For a color screen the video memory
is at B800:0000. For a monochrome
system use B000:000 */
screen = MK_FP(0xB800,0);

/* increase the counter and keep it
within 0 to 9 */
count++;
count %= 10;

/* put the number on the screen */
screen[0][79] = count + '0' + ATTR;

/* call the old interrupt handler */
oldhandler();
}

int main(void)
{

/* get the address of the current clock
tick interrupt */
oldhandler = getvect(INTR);

/* install the new interrupt handler */
setvect(INTR, handler);

/* _psp is the starting address of the
program in memory. The top of the stack
is the end of the program. Using _SS and
_SP together we can get the end of the
stack. You may want to allow a bit of
saftey space to insure that enough room
is being allocated ie:
(_SS + ((_SP + safety space)/16) - _psp)
*/
keep(0, (_SS + (_SP/16) - _psp));
return 0;
}

函数名: imagesize
功 能: 返回保存位图像所需的字节数
用 法: unsigned far imagesize(int left, int top, int right, int bottom);
程序例:

#include
#include
#include
#include

#define ARROW_SIZE 10

void draw_arrow(int x, int y);

int main(void)
{
/* request autodetection */
int gdriver = DETECT, gmode, errorcode;
void *arrow;
int x, y, maxx;
unsigned int size;

/* initialize graphics and local variables */
initgraph(&gdriver, &gmode, "");

/* read result of initialization */
errorcode = graphresult();
if (errorcode != grOk) /* an error occurred */
{
printf("Graphics error: %s/n", grapherrormsg(errorcode));
printf("Press any key to halt:");
getch();
exit(1); /* terminate with an error code */
}

maxx = getmaxx();
x = 0;
y = getmaxy() / 2;

/* draw the image to be grabbed */
draw_arrow(x, y);

/* calculate the size of the image */
size = imagesize(x, y-ARROW_SIZE, x+(4*ARROW_SIZE), y+ARROW_SIZE);

/* allocate memory to hold the image */
arrow = malloc(size);

/* grab the image */
getimage(x, y-ARROW_SIZE, x+(4*ARROW_SIZE), y+ARROW_SIZE, arrow);

/* repeat until a key is pressed */
while (!kbhit())
{
/* erase old image */
putimage(x, y-ARROW_SIZE, arrow, XOR_PUT);

x += ARROW_SIZE;
if (x >= maxx)
x = 0;

/* plot new image */
putimage(x, y-ARROW_SIZE, arrow, XOR_PUT);
}

/* clean up */
free(arrow);
closegraph();
return 0;
}

void draw_arrow(int x, int y)
{
/* draw an arrow on the screen */
moveto(x, y);
linerel(4*ARROW_SIZE, 0);
linerel(-2*ARROW_SIZE, -1*ARROW_SIZE);
linerel(0, 2*ARROW_SIZE);
linerel(2*ARROW_SIZE, -1*ARROW_SIZE);
}


函数名: initgraph
功 能: 初始化图形系统
用 法: void far initgraph(int far *graphdriver, int far *graphmode,
char far *pathtodriver);
程序例:

#include
#include
#include
#include

int main(void)
{
/* request auto detection */
int gdriver = DETECT, gmode, errorcode;

/* initialize graphics mode */
initgraph(&gdriver, &gmode, "");

/* read result of initialization */
errorcode = graphresult();

if (errorcode != grOk) /* an error occurred */
{
printf("Graphics error: %s/n", grapherrormsg(errorcode));
printf("Press any key to halt:");
getch();
exit(1); /* return with error code */
}

/* draw a line */
line(0, 0, getmaxx(), getmaxy());

/* clean up */
getch();
closegraph();
return 0;
}


函数名: inport
功 能: 从硬件端口中输入
用 法: int inp(int protid);
程序例:

#include
#include

int main(void)
{
int result;
int port = 0; /* serial port 0 */

result = inport(port);
printf("Word read from port %d = 0x%X/n", port, result);
return 0;
}

函数名: insline
功 能: 在文本窗口中插入一个空行
用 法: void insline(void);
程序例:

#include

int main(void)
{
clrscr();
cprintf("INSLINE inserts an empty line in the text window/r/n");
cprintf("at the cursor position using the current text/r/n");
cprintf("background color. All lines below the empty one/r/n");
cprintf("move down one line and the bottom line scrolls/r/n");
cprintf("off the bottom of the window./r/n");
cprintf("/r/nPress any key to continue:");
gotoxy(1, 3);
getch();
insline();
getch();
return 0;
}


函数名: installuserdriver
功 能: 安装设备驱动程序到BGI设备驱动程序表中
用 法: int far installuserdriver(char far *name, int (*detect)(void));
程序例:

#include
#include
#include
#include

/* function prototypes */
int huge detectEGA(void);
void checkerrors(void);

int main(void)
{
int gdriver, gmode;

/* install a user written device driver */
gdriver = installuserdriver("EGA", detectEGA);

/* must force use of detection routine */
gdriver = DETECT;

/* check for any installation errors */
checkerrors();

/* initialize graphics and local variables */
initgraph(&gdriver, &gmode, "");

/* check for any initialization errors */
checkerrors();

/* draw a line */
line(0, 0, getmaxx(), getmaxy());

/* clean up */
getch();
closegraph();
return 0;
}

/* detects EGA or VGA cards */
int huge detectEGA(void)
{
int driver, mode, sugmode = 0;

detectgraph(&driver, &mode);
if ((driver == EGA) || (driver == VGA))
/* return suggested video mode number */
return sugmode;
else
/* return an error code */
return grError;
}

/* check for and report any graphics errors */
void checkerrors(void)
{
int errorcode;

/* read result of last graphics operation */
errorcode = graphresult();
if (errorcode != grOk)
{
printf("Graphics error: %s/n", grapherrormsg(errorcode));
printf("Press any key to halt:");
getch();
exit(1);
}
}

函数名: installuserfont
功 能: 安装未嵌入BGI系统的字体文件(CHR)
用 法: int far installuserfont(char far *name);
程序例:

#include
#include
#include
#include

/* function prototype */
void checkerrors(void);

int main(void)
{
/* request auto detection */
int gdriver = DETECT, gmode;
int userfont;
int midx, midy;

/* initialize graphics and local variables */
initgraph(&gdriver, &gmode, "");

midx = getmaxx() / 2;
midy = getmaxy() / 2;

/* check for any initialization errors */
checkerrors();

/* install a user defined font file */
userfont = installuserfont("USER.CHR");

/* check for any installation errors */
checkerrors();

/* select the user font */
settextstyle(userfont, HORIZ_DIR, 4);

/* output some text */
outtextxy(midx, midy, "Testing!");

/* clean up */
getch();
closegraph();
return 0;
}

/* check for and report any graphics errors */
void checkerrors(void)
{
int errorcode;

/* read result of last graphics operation */
errorcode = graphresult();
if (errorcode != grOk)
{
printf("Graphics error: %s/n", grapherrormsg(errorcode));
printf("Press any key to halt:");
getch();
exit(1);
}
}



函数名: int86
功 能: 通用8086软中断接口
用 法: int int86(int intr_num, union REGS *inregs, union REGS *outregs);
程序例:

#include
#include
#include

#define VIDEO 0x10

void movetoxy(int x, int y)
{
union REGS regs;

regs.h.ah = 2; /* set cursor postion */
regs.h.dh = y;
regs.h.dl = x;
regs.h.bh = 0; /* video page 0 */
int86(VIDEO, ®s, ®s);
}

int main(void)
{
clrscr();
movetoxy(35, 10);
printf("Hello/n");
return 0;
}


函数名: int86x
功 能: 通用8086软中断接口
用 法: int int86x(int intr_num, union REGS *insegs, union REGS *outregs,
struct SREGS *segregs);
程序例:

#include
#include
#include

int main(void)
{
char filename[80];
union REGS inregs, outregs;
struct SREGS segregs;

printf("Enter filename: ");
gets(filename);
inregs.h.ah = 0x43;
inregs.h.al = 0x21;
inregs.x.dx = FP_OFF(filename);
segregs.ds = FP_SEG(filename);
int86x(0x21, &inregs, &outregs, &segregs);
printf("File attribute: %X/n", outregs.x.cx);
return 0;
}


函数名: intdos
功 能: 通用DOS接口
用 法: int intdos(union REGS *inregs, union REGS *outregs);
程序例:

#include
#include

/* deletes file name; returns 0 on success, nonzero on failure */
int delete_file(char near *filename)
{
union REGS regs;
int ret;
regs.h.ah = 0x41; /* delete file */
regs.x.dx = (unsigned) filename;
ret = intdos(®s, ®s);

/* if carry flag is set, there was an error */
return(regs.x.cflag ? ret : 0);
}

int main(void)
{
int err;
err = delete_file("NOTEXIST.$$$");
if (!err)
printf("Able to delete NOTEXIST.$$$/n");
else
printf("Not Able to delete NOTEXIST.$$$/n");
return 0;
}


函数名: intdosx
功 能: 通用DOS中断接口
用 法: int intdosx(union REGS *inregs, union REGS *outregs,
struct SREGS *segregs);
程序例:

#include
#include

/* deletes file name; returns 0 on success, nonzero on failure */
int delete_file(char far *filename)
{
union REGS regs; struct SREGS sregs;
int ret;
regs.h.ah = 0x41; /* delete file */
regs.x.dx = FP_OFF(filename);
sregs.ds = FP_SEG(filename);
ret = intdosx(®s, ®s, &sregs);

/* if carry flag is set, there was an error */
return(regs.x.cflag ? ret : 0);
}

int main(void)
{
int err;
err = delete_file("NOTEXIST.$$$");
if (!err)
printf("Able to delete NOTEXIST.$$$/n");
else
printf("Not Able to delete NOTEXIST.$$$/n");
return 0;
}

函数名: intr
功 能: 改变软中断接口
用 法: void intr(int intr_num, struct REGPACK *preg);
程序例:

#include
#include
#include
#include

#define CF 1 /* Carry flag */

int main(void)
{
char directory[80];
struct REGPACK reg;

printf("Enter directory to change to: ");
gets(directory);
reg.r_ax = 0x3B << 8; /* shift 3Bh into AH */
reg.r_dx = FP_OFF(directory);
reg.r_ds = FP_SEG(directory);
intr(0x21, ®);
if (reg.r_flags & CF)
printf("Directory change failed/n");
getcwd(directory, 80);
printf("The current directory is: %s/n", directory);
return 0;
}

函数名: ioctl
功 能: 控制I/O设备
用 法: int ioctl(int handle, int cmd[,int *argdx, int argcx]);
程序例:

#include
#include
#include

int main(void)
{
int stat;

/* use func 8 to determine if the default drive is removable */
stat = ioctl(0, 8, 0, 0);
if (!stat)
printf("Drive %c is removable./n", getdisk() + 'A');
else
printf("Drive %c is not removable./n", getdisk() + 'A');
return 0;
}


函数名: isatty
功 能: 检查设备类型
用 法: int isatty(int handle);
程序例:

#include
#include

int main(void)
{
int handle;

handle = fileno(stdprn);
if (isatty(handle))
printf("Handle %d is a device type/n", handle);
else
printf("Handle %d isn't a device type/n", handle);
return 0;
}


函数名: itoa
功 能: 把一整数转换为字符串
用 法: char *itoa(int value, char *string, int radix);
程序例:

#include
#include

int main(void)
{
int number = 12345;
char string[25];

itoa(number, string, 10);
printf("integer = %d string = %s/n", number, string);
return 0;
}

函数名: harderr
功 能: 建立一个硬件错误处理程序
用 法: void harderr(int (*fptr)());
程序例:
/*This program will trap disk errors and prompt
the user for action. Try running it with no
disk in drive A: to invoke its functions.*/

#include
#include
#include
#define IGNORE 0
#define RETRY 1
#define ABORT 2
int buf[500];
/*define the error messages for trapping disk problems*/
static char *err_msg[] = {
"write protect",
"unknown unit",
"drive not ready",
"unknown command",
"data error (CRC)",
"bad request",
"seek error",
"unknown media type",
"sector not found",
"printer out of paper",
"write fault",
"read fault",
"general failure",
"reserved",
"reserved",
"invalid disk change"
};

error_win(char *msg)
{
int retval;

cputs(msg);

/*prompt for user to press a key to abort, retry, ignore*/
while(1)
{
retval= getch();
if (retval == 'a' || retval == 'A')
{
retval = ABORT;
break;
}
if (retval == 'r' || retval == 'R')
{
retval = RETRY;
break;
}
if (retval == 'i' || retval == 'I')
{
retval = IGNORE;
break;
}
}

return(retval);
}

/*pragma warn -par reduces warnings which occur
due to the non use of the parameters errval,
bp and si to the handler.*/
#pragma warn -par

int handler(int errval,int ax,int bp,int si)
{
static char msg[80];
unsigned di;
int drive;
int errorno;
di= _DI;
/*if this is not a disk error then it was
another device having trouble*/

if (ax < 0)
{
/* report the error */
error_win("Device error");
/* and return to the program directly requesting abort */
hardretn(ABORT);
}
/* otherwise it was a disk error */
drive = ax & 0x00FF;
errorno = di & 0x00FF;
/* report which error it was */
sprintf(msg, "Error: %s on drive %c/r/nA)bort, R)etry, I)gnore: ",
err_msg[errorno], 'A' + drive);
/*
return to the program via dos interrupt 0x23 with abort, retry,
or ignore as input by the user.
*/
hardresume(error_win(msg));
return ABORT;
}
#pragma warn +par

int main(void)
{
/*
install our handler on the hardware problem interrupt
*/
harderr(handler);
clrscr();
printf("Make sure there is no disk in drive A:/n");
printf("Press any key ..../n");
getch();
printf("Trying to access drive A:/n");
printf("fopen returned %p/n",fopen("A:temp.dat", "w"));
return 0;
}

函数名: hardresume
功 能: 硬件错误处理函数
用 法: void hardresume(int rescode);
程序例:

/* This program will trap disk errors and prompt the user for action. */
/* Try running it with no disk in drive A: to invoke its functions */

#include
#include
#include

#define IGNORE 0
#define RETRY 1
#define ABORT 2

int buf[500];

/* define the error messages for trapping disk problems */
static char *err_msg[] = {
"write protect",
"unknown unit",
"drive not ready",
"unknown command",
"data error (CRC)",
"bad request",
"seek error",
"unknown media type",
"sector not found",
"printer out of paper",
"write fault",
"read fault",
"general failure",
"reserved",
"reserved",
"invalid disk change"
};

error_win(char *msg)
{
int retval;

cputs(msg);

/* prompt for user to press a key to abort, retry, ignore */
while(1)
{
retval= getch();
if (retval == 'a' || retval == 'A')
{
retval = ABORT;
break;
}
if (retval == 'r' || retval == 'R')
{
retval = RETRY;
break;
}
if (retval == 'i' || retval == 'I')
{
retval = IGNORE;
break;
}
}

return(retval);
}

/* pragma warn -par reduces warnings which occur due to the non use */
/* of the parameters errval, bp and si to the handler. */
#pragma warn -par

int handler(int errval,int ax,int bp,int si)
{
static char msg[80];
unsigned di;
int drive;
int errorno;

di= _DI;
/* if this is not a disk error then it was another device having trouble */

if (ax < 0)
{
/* report the error */
error_win("Device error");
/* and return to the program directly
requesting abort */
hardretn(ABORT);
}
/* otherwise it was a disk error */
drive = ax & 0x00FF;
errorno = di & 0x00FF;
/* report which error it was */
sprintf(msg, "Error: %s on drive %c/r/nA)bort, R)etry, I)gnore: ",
err_msg[errorno], 'A' + drive);
/* return to the program via dos interrupt 0x23 with abort, retry */
/* or ignore as input by the user. */
hardresume(error_win(msg));
return ABORT;
}
#pragma warn +par

int main(void)
{
/* install our handler on the hardware problem interrupt */
harderr(handler);
clrscr();
printf("Make sure there is no disk in drive A:/n");
printf("Press any key ..../n");
getch();
printf("Trying to access drive A:/n");
printf("fopen returned %p/n",fopen("A:temp.dat", "w"));
return 0;
}

函数名: highvideo
功 能: 选择高亮度文本字符
用 法: void highvideo(void);
程序例:

#include

int main(void)
{
clrscr();

lowvideo();
cprintf("Low Intensity text/r/n");
highvideo();
gotoxy(1,2);
cprintf("High Intensity Text/r/n");

return 0;
}

函数名: hypot
功 能: 计算直角三角形的斜边长
用 法: double hypot(double x, double y);
程序例:

#include
#include

int main(void)
{
double result;
double x = 3.0;
double y = 4.0;

result = hypot(x, y);
printf("The hypotenuse is: %lf/n", result);

return 0;
}

函数名: getmoderange
功 能: 取给定图形驱动程序的模式范围
用 法: void far getmoderange(int graphdriver, int far *lomode,
int far *himode);
程序例:

#include
#include
#include
#include

int main(void)
{
/* request auto detection */
int gdriver = DETECT, gmode, errorcode;
int midx, midy;
int low, high;
char mrange[80];

/* initialize graphics and local variables */
initgraph(&gdriver, &gmode, "");

/* read result of initialization */
errorcode = graphresult();
if (errorcode != grOk) /* an error occurred */
{
printf("Graphics error: %s/n", grapherrormsg(errorcode));
printf("Press any key to halt:");
getch();
exit(1); /* terminate with an error code */
}

midx = getmaxx() / 2;
midy = getmaxy() / 2;

/* get the mode range for this driver */
getmoderange(gdriver, &low, &high);

/* convert mode range info. into strings */
sprintf(mrange, "This driver supports modes %d..%d", low, high);

/* display the information */
settextjustify(CENTER_TEXT, CENTER_TEXT);
outtextxy(midx, midy, mrange);

/* clean up */
getch();
closegraph();
return 0;
}

函数名: getpalette
功 能: 返回有关当前调色板的信息
用 法: void far getpalette(struct palettetype far *palette);
程序例:

#include
#include
#include
#include

int main(void)
{
/* request auto detection */
int gdriver = DETECT, gmode, errorcode;
struct palettetype pal;
char psize[80], pval[20];
int i, ht;
int y = 10;

/* initialize graphics and local variables */
initgraph(&gdriver, &gmode, "");

/* read result of initialization */
errorcode = graphresult();
/* an error occurred */
if (errorcode != grOk)
{
printf("Graphics error: %s/n",
grapherrormsg(errorcode));
printf("Press any key to halt:");
getch();
/* terminate with an error code */
exit(1);
}

/* grab a copy of the palette */
getpalette(&pal);

/* convert palette info. into strings */
sprintf(psize, "The palette has %d /
modifiable entries.", pal.size);

/* display the information */
outtextxy(0, y, psize);
if (pal.size != 0)
{
ht = textheight("W");
y += 2*ht;
outtextxy(0, y, "Here are the current /
values:");
y += 2*ht;
for (i=0; i
{
sprintf(pval,
"palette[%02d]: 0x%02X", i,
pal.colors[i]);
outtextxy(0, y, pval);
}
}

/* clean up */
getch();
closegraph();

return 0;
}

函数名: getpass
功 能: 读一个口令
用 法: char *getpass(char *prompt);
程序例:

#include

int main(void)
{
char *password;

password = getpass("Input a password:");
cprintf("The password is: %s/r/n",
password);
return 0;
}


函数名: getpixel
功 能: 取得指定像素的颜色
用 法: int far getpixel(int x, int y);
程序例:

#include
#include
#include
#include
#include

#define PIXEL_COUNT 1000
#define DELAY_TIME 100 /* in milliseconds */

int main(void)
{
/* request auto detection */
int gdriver = DETECT, gmode, errorcode;
int i, x, y, color, maxx, maxy,
maxcolor, seed;

/* initialize graphics and local variables */
initgraph(&gdriver, &gmode, "");

/* read result of initialization */
errorcode = graphresult();
/* an error occurred */
if (errorcode != grOk)
{
printf("Graphics error: %s/n",
grapherrormsg(errorcode));
printf("Press any key to halt:");
getch();
/* terminate with an error code */
exit(1);
}

maxx = getmaxx() + 1;
maxy = getmaxy() + 1;
maxcolor = getmaxcolor() + 1;

while (!kbhit())
{
/* seed the random number generator */
seed = random(32767);
srand(seed);
for (i=0; i
{
x = random(maxx);
y = random(maxy);
color = random(maxcolor);
putpixel(x, y, color);
}

delay(DELAY_TIME);
srand(seed);
for (i=0; i
{
x = random(maxx);
y = random(maxy);
color = random(maxcolor);
if (color == getpixel)

函数名: gets
功 能: 从流中取一字符串
用 法: char *gets(char *string);
程序例:

#include

int main(void)
{
char string[80];

printf("Input a string:");
gets(string);
printf("The string input was: %s/n",
string);
return 0;
}

函数名: gettext
功 能: 将文本方式屏幕上的文本拷贝到存储区
用 法: int gettext(int left, int top, int right, int bottom, void *destin);
程序例:

#include

char buffer[4096];

int main(void)
{
int i;
clrscr();
for (i = 0; i <= 20; i++)
cprintf("Line #%d/r/n", i);
gettext(1, 1, 80, 25, buffer);
gotoxy(1, 25);
cprintf("Press any key to clear screen...");
getch();
clrscr();
gotoxy(1, 25);
cprintf("Press any key to restore screen...");
getch();
puttext(1, 1, 80, 25, buffer);
gotoxy(1, 25);
cprintf("Press any key to quit...");
getch();
return 0;
}

函数名: gettextinfo
功 能: 取得文本模式的显示信息
用 法: void gettextinfo(struct text_info *inforec);
程序例:

#include

int main(void)
{
struct text_info ti;
gettextinfo(&ti);
cprintf("window left %2d/r/n",ti.winleft);
cprintf("window top %2d/r/n",ti.wintop);
cprintf("window right %2d/r/n",ti.winright);
cprintf("window bottom %2d/r/n",ti.winbottom);
cprintf("attribute %2d/r/n",ti.attribute);
cprintf("normal attribute %2d/r/n",ti.normattr);
cprintf("current mode %2d/r/n",ti.currmode);
cprintf("screen height %2d/r/n",ti.screenheight);
cprintf("screen width %2d/r/n",ti.screenwidth);
cprintf("current x %2d/r/n",ti.curx);
cprintf("current y %2d/r/n",ti.cury);
return 0;
}

函数名: gettextsettings
功 能: 返回有关当前图形文本字体的信息
用 法: void far gettextsettings(struct textsettingstype far *textinfo);
程序例:

#include
#include
#include
#include

/* the names of the fonts supported */
char *font[] = { "DEFAULT_FONT",
"TRIPLEX_FONT",
"SMALL_FONT",
"SANS_SERIF_FONT",
"GOTHIC_FONT"
};

/* the names of the text directions supported */
char *dir[] = { "HORIZ_DIR", "VERT_DIR" };

/* horizontal text justifications supported */
char *hjust[] = { "LEFT_TEXT", "CENTER_TEXT", "RIGHT_TEXT" };

/* vertical text justifications supported */
char *vjust[] = { "BOTTOM_TEXT", "CENTER_TEXT", "TOP_TEXT" };

int main(void)
{
/* request auto detection */
int gdriver = DETECT, gmode, errorcode;
struct textsettingstype textinfo;
int midx, midy, ht;
char fontstr[80], dirstr[80], sizestr[80];
char hjuststr[80], vjuststr[80];

/* initialize graphics and local variables */
initgraph(&gdriver, &gmode, "");

/* read result of initialization */
errorcode = graphresult();
if (errorcode != grOk) /* an error occurred */
{
printf("Graphics error: %s/n", grapherrormsg(errorcode));
printf("Press any key to halt:");
getch();
exit(1); /* terminate with an error code */
}

midx = getmaxx() / 2;
midy = getmaxy() / 2;

/* get information about current text settings */
gettextsettings(&textinfo);

/* convert text information into strings */
sprintf(fontstr, "%s is the text style.", font[textinfo.font]);
sprintf(dirstr, "%s is the text direction.", dir[textinfo.direction]);
sprintf(sizestr, "%d is the text size.", textinfo.charsize);
sprintf(hjuststr, "%s is the horizontal justification.",
hjust[textinfo.horiz]);
sprintf(vjuststr, "%s is the vertical justification.",
vjust[textinfo.vert]);

/* display the information */
ht = textheight("W");
settextjustify(CENTER_TEXT, CENTER_TEXT);
outtextxy(midx, midy, fontstr);
outtextxy(midx, midy+2*ht, dirstr);
outtextxy(midx, midy+4*ht, sizestr);
outtextxy(midx, midy+6*ht, hjuststr);
outtextxy(midx, midy+8*ht, vjuststr);

/* clean up */
getch();
closegraph();
return 0;
}

函数名: gettime
功 能: 取得系统时间
用 法: void gettime(struct time *timep);
程序例:

#include
#include

int main(void)
{
struct time t;

gettime(&t);
printf("The current time is: %2d:%02d:%02d.%02d/n",
t.ti_hour, t.ti_min, t.ti_sec, t.ti_hund);
return 0;
}


函数名: getvect
功 能: 取得中断向量入口
用 法: void interrupt(*getvect(int intr_num));
程序例:

#include
#include

void interrupt get_out(); /* interrupt prototype */

void interrupt (*oldfunc)(); /* interrupt function pointer */
int looping = 1;

int main(void)
{
puts("Press to terminate");

/* save the old interrupt */
oldfunc = getvect(5);

/* install interrupt handler */
setvect(5,get_out);

/* do nothing */
while (looping);

/* restore to original interrupt routine */
setvect(5,oldfunc);

puts("Success");
return 0;
}
void interrupt get_out()
{
looping = 0; /* change global variable to get out of loop */
}

函数名: getverify
功 能: 返回DOS校验标志状态
用 法: int getverify(void);
程序例:

#include
#include

int main(void)
{
if (getverify())
printf("DOS verify flag is on/n");
else
printf("DOS verify flag is off/n");
return 0;
}

函数名: getviewsetting
功 能: 返回有关当前视区的信息
用 法: void far getviewsettings(struct viewporttype far *viewport);
程序例:

#include
#include
#include
#include

char *clip[] = { "OFF", "ON" };

int main(void)
{
/* request auto detection */
int gdriver = DETECT, gmode, errorcode;
struct viewporttype viewinfo;
int midx, midy, ht;
char topstr[80], botstr[80], clipstr[80];

/* initialize graphics and local variables */
initgraph(&gdriver, &gmode, "");

/* read result of initialization */
errorcode = graphresult();
if (errorcode != grOk) /* an error occurred */
{
printf("Graphics error: %s/n", grapherrormsg(errorcode));
printf("Press any key to halt:");
getch();
exit(1); /* terminate with an error code */
}

midx = getmaxx() / 2;
midy = getmaxy() / 2;

/* get information about current viewport */
getviewsettings(&viewinfo);

/* convert text information into strings */
sprintf(topstr, "(%d, %d) is the upper left viewport corner.",
viewinfo.left, viewinfo.top);
sprintf(botstr, "(%d, %d) is the lower right viewport corner.",
viewinfo.right, viewinfo.bottom);
sprintf(clipstr, "Clipping is turned %s.", clip[viewinfo.clip]);

/* display the information */
settextjustify(CENTER_TEXT, CENTER_TEXT);
ht = textheight("W");
outtextxy(midx, midy, topstr);
outtextxy(midx, midy+2*ht, botstr);
outtextxy(midx, midy+4*ht, clipstr);

/* clean up */
getch();
closegraph();
return 0;
}


函数名: getw
功 能: 从流中取一整数
用 法: int getw(FILE *strem);
程序例:

#include
#include

#define FNAME "test.$$$"

int main(void)
{
FILE *fp;
int word;

/* place the word in a file */
fp = fopen(FNAME, "wb");
if (fp == NULL)
{
printf("Error opening file %s/n", FNAME);
exit(1);
}

word = 94;
putw(word,fp);
if (ferror(fp))
printf("Error writing to file/n");
else
printf("Successful write/n");
fclose(fp);

/* reopen the file */
fp = fopen(FNAME, "rb");
if (fp == NULL)
{
printf("Error opening file %s/n", FNAME);
exit(1);
}

/* extract the word */
word = getw(fp);
if (ferror(fp))
printf("Error reading file/n");
else
printf("Successful read: word = %d/n", word);

/* clean up */
fclose(fp);
unlink(FNAME);

return 0;
}



函数名: getx
功 能: 返回当前图形位置的x坐标
用 法: int far getx(void);
程序例:

#include
#include
#include
#include

int main(void)
{
/* request auto detection */
int gdriver = DETECT, gmode, errorcode;
char msg[80];

/* initialize graphics and local variables */
initgraph(&gdriver, &gmode, "");

/* read result of initialization */
errorcode = graphresult();
if (errorcode != grOk) /* an error occurred */
{
printf("Graphics error: %s/n", grapherrormsg(errorcode));
printf("Press any key to halt:");
getch();
exit(1); /* terminate with an error code */
}

/* move to the screen center point */
moveto(getmaxx() / 2, getmaxy() / 2);

/* create a message string */
sprintf(msg, "<-(%d, %d) is the here.", getx(), gety());

/* display the message */
outtext(msg);

/* clean up */
getch();
closegraph();
return 0;
}


函数名: gety
功 能: 返回当前图形位置的y坐标
用 法: int far gety(void);
程序例:

#include
#include
#include
#include

int main(void)
{
/* request auto detection */
int gdriver = DETECT, gmode, errorcode;
char msg[80];

/* initialize graphics and local variables */
initgraph(&gdriver, &gmode, "");

/* read result of initialization */
errorcode = graphresult();
if (errorcode != grOk) /* an error occurred */
{
printf("Graphics error: %s/n", grapherrormsg(errorcode));
printf("Press any key to halt:");
getch();
exit(1); /* terminate with an error code */
}

/* move to the screen center point */
moveto(getmaxx() / 2, getmaxy() / 2);

/* create a message string */
sprintf(msg, "<-(%d, %d) is the here.", getx(), gety());

/* display the message */
outtext(msg);

/* clean up */
getch();
closegraph();
return 0;
}


函数名: gmtime
功 能: 把日期和时间转换为格林尼治标准时间(GMT)
用 法: struct tm *gmtime(long *clock);
程序例:

#include
#include
#include
#include

/* Pacific Standard Time & Daylight Savings */
char *tzstr = "TZ=PST8PDT";

int main(void)
{
time_t t;
struct tm *gmt, *area;

putenv(tzstr);
tzset();

t = time(NULL);
area = localtime(&t);
printf("Local time is: %s", asctime(area));
gmt = gmtime(&t);
printf("GMT is: %s", asctime(gmt));
return 0;
}


函数名: gotoxy
功 能: 在文本窗口中设置光标
用 法: void gotoxy(int x, int y);
程序例:

#include

int main(void)
{
clrscr();
gotoxy(35, 12);
cprintf("Hello world");
getch();
return 0;
}


函数名: gotoxy
功 能: 在文本窗口中设置光标
用 法: void gotoxy(int x, int y);
程序例:

#include

int main(void)
{
clrscr();
gotoxy(35, 12);
cprintf("Hello world");
getch();
return 0;
}

函数名: graphdefaults
功 能: 将所有图形设置复位为它们的缺省值
用 法: void far graphdefaults(void);
程序例:

#include
#include
#include
#include

int main(void)
{
/* request auto detection */
int gdriver = DETECT, gmode, errorcode;
int maxx, maxy;

/* initialize graphics and local variables */
initgraph(&gdriver, &gmode, "c://bor//Borland//bgi");

/* read result of initialization */
errorcode = graphresult();
if (errorcode != grOk) /* an error occurred */
{
printf("Graphics error: %s/n", grapherrormsg(errorcode));
printf("Press any key to halt:");
getch();
exit(1); /* terminate with an error code */
}

maxx = getmaxx();
maxy = getmaxy();

/* output line with non-default settings */
setlinestyle(DOTTED_LINE, 0, 3);
line(0, 0, maxx, maxy);
outtextxy(maxx/2, maxy/3, "Before default values are restored.");
getch();

/* restore default values for everything */
graphdefaults();

/* clear the screen */
cleardevice();

/* output line with default settings */
line(0, 0, maxx, maxy);
outtextxy(maxx/2, maxy/3, "After restoring default values.");

/* clean up */
getch();
closegraph();
return 0;
}

函数名: grapherrormsg
功 能: 返回一个错误信息串的指针
用 法: char *far grapherrormsg(int errorcode);
程序例:

#include
#include
#include
#include

#define NONSENSE -50

int main(void)
{
/* FORCE AN ERROR TO OCCUR */
int gdriver = NONSENSE, gmode, errorcode;

/* initialize graphics mode */
initgraph(&gdriver, &gmode, "");

/* read result of initialization */
errorcode = graphresult();

/* if an error occurred, then output a */
/* descriptive error message. */
if (errorcode != grOk)
{
printf("Graphics error: %s/n", grapherrormsg(errorcode));
printf("Press any key to halt:");
getch();
exit(1); /* terminate with an error code */
}

/* draw a line */
line(0, 0, getmaxx(), getmaxy());

/* clean up */
getch();
closegraph();
return 0;
}

函数名: graphresult
功 能: 返回最后一次不成功的图形操作的错误代码
用 法: int far graphresult(void);
程序例:

#include
#include
#include
#include

int main(void)
{
/* request auto detection */
int gdriver = DETECT, gmode, errorcode;

/* initialize graphics and local variables */
initgraph(&gdriver, &gmode, "");

/* read result of initialization */
errorcode = graphresult();

if (errorcode != grOk) /* an error occurred */
{
printf("Graphics error: %s/n", grapherrormsg(errorcode));
printf("Press any key to halt:");
getch();
exit(1); /* terminate with an error code */
}

/* draw a line */
line(0, 0, getmaxx(), getmaxy());

/* clean up */
getch();
closegraph();
return 0;
}

函数名: _graphfreemem
功 能: 用户可修改的图形存储区释放函数
用 法: void far _graphfreemem(void far *ptr, unsigned size);
程序例:

#include
#include
#include
#include
#include

int main(void)
{
/* request auto detection */
int gdriver = DETECT, gmode, errorcode;
int midx, midy;

/* clear the text screen */
clrscr();
printf("Press any key to initialize graphics mode:");
getch();
clrscr();

/* initialize graphics and local variables */
initgraph(&gdriver, &gmode, "");

/* read result of initialization */
errorcode = graphresult();
if (errorcode != grOk) /* an error occurred */
{
printf("Graphics error: %s/n", grapherrormsg(errorcode));
printf("Press any key to halt:");
getch();
exit(1); /* terminate with an error code */
}

midx = getmaxx() / 2;
midy = getmaxy() / 2;

/* display a message */
settextjustify(CENTER_TEXT, CENTER_TEXT);
outtextxy(midx, midy, "Press any key to exit graphics mode:");

/* clean up */
getch();
closegraph();
return 0;
}

/* called by the graphics kernel to allocate memory */
void far * far _graphgetmem(unsigned size)
{
printf("_graphgetmem called to allocate %d bytes./n", size);
printf("hit any key:");
getch();
printf("/n");

/* allocate memory from far heap */
return farmalloc(size);
}

/* called by the graphics kernel to free memory */
void far _graphfreemem(void far *ptr, unsigned size)
{
printf("_graphfreemem called to free %d bytes./n", size);
printf("hit any key:");
getch();
printf("/n");

/* free ptr from far heap */
farfree(ptr);
}

函数名: _graphgetmem
功 能: 用户可修改的图形存储区分配函数
用 法: void far *far _graphgetmem(unsigned size);
程序例:

#include
#include
#include
#include
#include

int main(void)
{
/* request autodetection */
int gdriver = DETECT, gmode, errorcode;
int midx, midy;

/* clear the text screen */
clrscr();
printf("Press any key to initialize graphics mode:");
getch();
clrscr();

/* initialize graphics and local variables */
initgraph(&gdriver, &gmode, "");

/* read result of initialization */
errorcode = graphresult();
if (errorcode != grOk) /* an error occurred */
{
printf("Graphics error: %s/n", grapherrormsg(errorcode));
printf("Press any key to halt:");
getch();
exit(1); /* terminate with an error code */
}

midx = getmaxx() / 2;
midy = getmaxy() / 2;

/* display a message */
settextjustify(CENTER_TEXT, CENTER_TEXT);
outtextxy(midx, midy, "Press any key to exit graphics mode:");

/* clean up */
getch();
closegraph();
return 0;
}

/* called by the graphics kernel to allocate memory */
void far * far _graphgetmem(unsigned size)
{
printf("_graphgetmem called to allocate %d bytes./n", size);
printf("hit any key:");
getch();
printf("/n");

/* allocate memory from far heap */
return farmalloc(size);
}

/* called by the graphics kernel to free memory */
void far _graphfreemem(void far *ptr, unsigned size)
{
printf("_graphfreemem called to free %d bytes./n", size);
printf("hit any key:");
getch();
printf("/n");

/*

函数名: gcvt
功 能: 把浮点数转换成字符串
用 法: char *gcvt(double value, int ndigit, char *buf);
程序例:

#include
#include

int main(void)
{
char str[25];
double num;
int sig = 5; /* significant digits */

/* a regular number */
num = 9.876;
gcvt(num, sig, str);
printf("string = %s/n", str);

/* a negative number */
num = -123.4567;
gcvt(num, sig, str);
printf("string = %s/n", str);

/* scientific notation */
num = 0.678e5;
gcvt(num, sig, str);
printf("string = %s/n", str);

return(0);
}


函数名: geninterrupt
功 能: 产生一个软中断
用 法: void geninterrupt(int intr_num);
程序例:

#include
#include

/* function prototype */
void writechar(char ch);

int main(void)
{
clrscr();
gotoxy(80,25);
writechar('*');
getch();
return 0;
}

/*
outputs a character at the current cursor
position using the video BIOS to avoid the
scrolling of the screen when writing to
location (80,25).
*/

void writechar(char ch)
{
struct text_info ti;
/* grab current text settings */
gettextinfo(&ti);
/* interrupt 0x10 sub-function 9 */
_AH = 9;
/* character to be output */
_AL = ch;
_BH = 0; /* video page */
_BL = ti.attribute; /* video attribute */
_CX = 1; /* repetition factor */
geninterrupt(0x10); /* output the char */
}

函数名: getarccoords
功 能: 取得最后一次调用arc的坐标
用 法: void far getarccoords(struct arccoordstype far *arccoords);
程序例:

#include
#include
#include
#include

int main(void)
{
/* request auto detection */
int gdriver = DETECT, gmode, errorcode;
struct arccoordstype arcinfo;
int midx, midy;
int stangle = 45, endangle = 270;
char sstr[80], estr[80];

/* initialize graphics and local variables */
initgraph(&gdriver, &gmode, "");

/* read result of initialization */
errorcode = graphresult();
/* an error occurred */
if (errorcode != grOk)
{
printf("Graphics error: %s/n",
grapherrormsg(errorcode));
printf("Press any key to halt:");
getch();
/* terminate with an error code */
exit(1);
}

midx = getmaxx() / 2;
midy = getmaxy() / 2;

/* draw arc and get coordinates */
setcolor(getmaxcolor());
arc(midx, midy, stangle, endangle, 100);
getarccoords(&arcinfo);

/* convert arc information into strings */
sprintf(sstr, "*- (%d, %d)",
arcinfo.xstart, arcinfo.ystart);
sprintf(estr, "*- (%d, %d)",
arcinfo.xend, arcinfo.yend);

/* output the arc information */
outtextxy(arcinfo.xstart,
arcinfo.ystart, sstr);
outtextxy(arcinfo.xend,
arcinfo.yend, estr);

/* clean up */
getch();
closegraph();
return 0;
}


函数名: getaspectratio
功 能: 返回当前图形模式的纵横比
用 法: void far getaspectratio(int far *xasp, int far *yasp);
程序例:

#include
#include
#include
#include

int main(void)
{
/* request auto detection */
int gdriver = DETECT, gmode, errorcode;
int xasp, yasp, midx, midy;

/* initialize graphics and local variables */
initgraph(&gdriver, &gmode, "");

/* read result of initialization */
errorcode = graphresult();
/* an error occurred */
if (errorcode != grOk)
{
printf("Graphics error: %s/n",
grapherrormsg(errorcode));
printf("Press any key to halt:");
getch();
/* terminate with an error code */
exit(1);
}

midx = getmaxx() / 2;
midy = getmaxy() / 2;
setcolor(getmaxcolor());

/* get current aspect ratio settings */
getaspectratio(&xasp, &yasp);

/* draw normal circle */
circle(midx, midy, 100);
getch();

/* draw wide circle */
cleardevice();
setaspectratio(xasp/2, yasp);
circle(midx, midy, 100);
getch();

/* draw narrow circle */
cleardevice();
setaspectratio(xasp, yasp/2);
circle(midx, midy, 100);

/* clean up */
getch();
closegraph();
return 0;
}


函数名: getbkcolor
功 能: 返回当前背景颜色
用 法: int far getbkcolor(void);
程序例:

#include
#include
#include
#include
#include

int main(void)
{
/* request auto detection */
int gdriver = DETECT, gmode, errorcode;
int bkcolor, midx, midy;
char bkname[35];

/* initialize graphics and local variables */
initgraph(&gdriver, &gmode, "");

/* read result of initialization */
errorcode = graphresult();
/* an error occurred */
if (errorcode != grOk)
{
printf("Graphics error: %s/n",
grapherrormsg(errorcode));
printf("Press any key to halt:");
getch();
/* terminate with an error code */
exit(1);
}

midx = getmaxx() / 2;
midy = getmaxy() / 2;
setcolor(getmaxcolor());

/* for centering text on the display */
settextjustify(CENTER_TEXT, CENTER_TEXT);

/* get the current background color */
bkcolor = getbkcolor();

/* convert color value into a string */
itoa(bkcolor, bkname, 10);
strcat(bkname,
" is the current background color.");

/* display a message */
outtextxy(midx, midy, bkname);

/* clean up */
getch();
closegraph();
return 0;
}


函数名: getc
功 能: 从流中取字符
用 法: int getc(FILE *stream);
程序例:

#include

int main(void)
{
char ch;

printf("Input a character:");
/* read a character from the
standard input stream */
ch = getc(stdin);
printf("The character input was: '%c'/n",
ch);
return 0;
}


函数名: getcbrk
功 能: 获取Control_break设置
用 法: int getcbrk(void);
程序例:

#include
#include

int main(void)
{
if (getcbrk())
printf("Cntrl-brk flag is on/n");
else
printf("Cntrl-brk flag is off/n");

return 0;
}


函数名: getch
功 能: 从控制台无回显地取一个字符
用 法: int getch(void);
程序例:

#include
#include

int main(void)
{
char ch;

printf("Input a character:");
ch = getche();
printf("/nYou input a '%c'/n", ch);
return 0;
}

函数名: getchar
功 能: 从stdin流中读字符
用 法: int getchar(void);
程序例:

#include

int main(void)
{
int c;

/* Note that getchar reads from stdin and
is line buffered; this means it will
not return until you press ENTER. */

while ((c = getchar()) != '/n')
printf("%c", c);

return 0;
}

函数名: getche
功 能: 从控制台取字符(带回显)
用 法: int getche(void);
程序例:

#include
#include

int main(void)
{
char ch;

printf("Input a character:");
ch = getche();
printf("/nYou input a '%c'/n", ch);
return 0;
}


函数名: getcolor
功 能: 返回当前画线颜色
用 法: int far getcolor(void);
程序例:

#include
#include
#include
#include
#include

int main(void)
{
/* request auto detection */
int gdriver = DETECT, gmode, errorcode;
int color, midx, midy;
char colname[35];

/* initialize graphics and local variables */
initgraph(&gdriver, &gmode, "");

/* read result of initialization */
errorcode = graphresult();
/* an error occurred */
if (errorcode != grOk)
{
printf("Graphics error: %s/n",
grapherrormsg(errorcode));
printf("Press any key to halt:");
getch();
/* terminate with an error code */
exit(1);
}

midx = getmaxx() / 2;
midy = getmaxy() / 2;
setcolor(getmaxcolor());

/* for centering text on the display */
settextjustify(CENTER_TEXT, CENTER_TEXT);

/* get the current drawing color */
color = getcolor();

/* convert color value into a string */
itoa(color, colname, 10);
strcat(colname,
" is the current drawing color.");

/* display a message */
outtextxy(midx, midy, colname);

/* clean up */
getch();
closegraph();
return 0;
}

函数名: getcurdir
功 能: 取指定驱动器的当前目录
用 法: int getcurdir(int drive, char *direc);
程序例:

#include
#include
#include

char *current_directory(char *path)
{
strcpy(path, "X://"); /* fill string with form of response: X:/ */
path[0] = 'A' + getdisk(); /* replace X with current drive letter */
getcurdir(0, path+3); /* fill rest of string with current directory */
return(path);
}

int main(void)
{
char curdir[MAXPATH];

current_directory(curdir);
printf("The current directory is %s/n", curdir);

return 0;
}

函数名: getcwd
功 能: 取当前工作目录
用 法: char *getcwd(char *buf, int n);
程序例:

#include
#include

int main(void)
{
char buffer[MAXPATH];

getcwd(buffer, MAXPATH);
printf("The current directory is: %s/n", buffer);
return 0;
}


函数名: getdate
功 能: 取DOS日期
用 法: void getdate(struct *dateblk);
程序例:

#include
#include

int main(void)
{
struct date d;

getdate(&d);
printf("The current year is: %d/n",
d.da_year);
printf("The current day is: %d/n",
d.da_day);
printf("The current month is: %d/n",
d.da_mon);
return 0;
}

函数名: getdefaultpalette
功 能: 返回调色板定义结构
用 法: struct palettetype *far getdefaultpalette(void);
程序例:

#include
#include
#include
#include

int main(void)
{
/* request auto detection */
int gdriver = DETECT, gmode, errorcode;
int i;

/* structure for returning palette copy */
struct palettetype far *pal=(void *) 0;

/* initialize graphics and local variables */
initgraph(&gdriver, &gmode, "");

/* read result of initialization */
errorcode = graphresult();
/* an error occurred */
if (errorcode != grOk)
{
printf("Graphics error: %s/n",
grapherrormsg(errorcode));
printf("Press any key to halt:");
getch();
/* terminate with an error code */
exit(1);
}

setcolor(getmaxcolor());

/* return a pointer to the default palette */
pal = getdefaultpalette();

for (i=0; i<16; i++)
{
printf("colors[%d] = %d/n", i,
pal->colors[i]);
getch();
}

/* clean up */
getch();
closegraph();
return 0;
}

函数名: getdisk
功 能: 取当前磁盘驱动器号
用 法: int getdisk(void);
程序例:

#include
#include

int main(void)
{
int disk;

disk = getdisk() + 'A';
printf("The current drive is: %c/n",
disk);
return 0;
}


函数名: getdrivername
功 能: 返回指向包含当前图形驱动程序名字的字符串指针
用 法: char *getdrivename(void);
程序例:

#include
#include
#include
#include

int main(void)
{
/* request auto detection */
int gdriver = DETECT, gmode, errorcode;

/* stores the device driver name */
char *drivername;

/* initialize graphics and local variables */
initgraph(&gdriver, &gmode, "");

/* read result of initialization */
errorcode = graphresult();
/* an error occurred */
if (errorcode != grOk)
{
printf("Graphics error: %s/n",
grapherrormsg(errorcode));
printf("Press any key to halt:");
getch();
/* terminate with an error code */
exit(1);
}

setcolor(getmaxcolor());

/* get name of the device driver in use */
drivername = getdrivername();

/* for centering text on the screen */
settextjustify(CENTER_TEXT, CENTER_TEXT);

/* output the name of the driver */
outtextxy(getmaxx() / 2, getmaxy() / 2,
drivername);

/* clean up */
getch();
closegraph();
return 0;
}

函数名: getdta
功 能: 取磁盘传输地址
用 法: char far *getdta(void);
程序例:

#include
#include

int main(void)
{
char far *dta;

dta = getdta();
printf("The current disk transfer /
address is: %Fp/n", dta);
return 0;
}

函数名: getenv
功 能: 从环境中取字符串
用 法: char *getenv(char *envvar);
程序例:

#include
#include

int main(void)
{
char *s;

s=getenv("COMSPEC"); /* get the comspec environment parameter */
printf("Command processor: %s/n",s); /* display comspec parameter */

return 0;
}



函数名: getfat, getfatd
功 能: 取文件分配表信息
用 法: void getfat(int drive, struct fatinfo *fatblkp);
程序例:

#include
#include

int main(void)
{
struct fatinfo diskinfo;
int flag = 0;

printf("Please insert disk in drive A/n");
getchar();

getfat(1, &diskinfo);
/* get drive information */

printf("/nDrive A: is ");
switch((unsigned char) diskinfo.fi_fatid)
{
case 0xFD:
printf("360K low density/n");
break;

case 0xF9:
printf("1.2 Meg high density/n");
break;

default:
printf("unformatted/n");
flag = 1;
}

if (!flag)
{
printf(" sectors per cluster %5d/n",
diskinfo.fi_sclus);
printf(" number of clusters %5d/n",
diskinfo.fi_nclus);
printf(" bytes per sector %5d/n",
diskinfo.fi_bysec);
}

return 0;
}

函数名: getfillpattern
功 能: 将用户定义的填充模式拷贝到内存中
用 法: void far getfillpattern(char far *upattern);
程序例:

#include
#include
#include
#include

int main(void)
{
/* request auto detection */
int gdriver = DETECT, gmode, errorcode;
int maxx, maxy;
char pattern[8] = {0x00, 0x70, 0x20, 0x27, 0x25, 0x27, 0x04, 0x04};

/* initialize graphics and local variables */
initgraph(&gdriver, &gmode, "");

/* read result of initialization */
errorcode = graphresult();
if (errorcode != grOk) /* an error occurred */
{
printf("Graphics error: %s/n", grapherrormsg(errorcode));
printf("Press any key to halt:");
getch();
exit(1); /* terminate with an error code */
}

maxx = getmaxx();
maxy = getmaxy();
setcolor(getmaxcolor());

/* select a user defined fill pattern */
setfillpattern(pattern, getmaxcolor());

/* fill the screen with the pattern */
bar(0, 0, maxx, maxy);

getch();

/* get the current user defined fill pattern */
getfillpattern(pattern);

/* alter the pattern we grabbed */
pattern[4] -= 1;
pattern[5] -= 3;
pattern[6] += 3;
pattern[7] -= 4;

/* select our new pattern */
setfillpattern(pattern, getmaxcolor());

/* fill the screen with the new pattern */
bar(0, 0, maxx, maxy);

/* clean up */
getch();
closegraph();
return 0;
}

函数名: getfillsettings
功 能: 取得有关当前填充模式和填充颜色的信息
用 法: void far getfillsettings(struct fillsettingstype far *fillinfo);
程序例:

#include
#include
#include
#include

/ the names of the fill styles supported */
char *fname[] = { "EMPTY_FILL",
"SOLID_FILL",
"LINE_FILL",
"LTSLASH_FILL",
"SLASH_FILL",
"BKSLASH_FILL",
"LTBKSLASH_FILL",
"HATCH_FILL",
"XHATCH_FILL",
"INTERLEAVE_FILL",
"WIDE_DOT_FILL",
"CLOSE_DOT_FILL",
"USER_FILL"
};

int main(void)
{
/* request auto detection */
int gdriver = DETECT, gmode, errorcode;
struct fillsettingstype fillinfo;
int midx, midy;
char patstr[40], colstr[40];

/* initialize graphics and local variables */
initgraph(&gdriver, &gmode, "");

/* read result of initialization */
errorcode = graphresult();
if (errorcode != grOk) /* an error occurred */
{
printf("Graphics error: %s/n", grapherrormsg(errorcode));
printf("Press any key to halt:");
getch();
exit(1); /* terminate with an error code */
}

midx = getmaxx() / 2;
midy = getmaxy() / 2;

/* get information about current fill pattern and color */
getfillsettings(&fillinfo);

/* convert fill information into strings */
sprintf(patstr, "%s is the fill style.", fname[fillinfo.pattern]);
sprintf(colstr, "%d is the fill color.", fillinfo.color);

/* display the information */
settextjustify(CENTER_TEXT, CENTER_TEXT);
outtextxy(midx, midy, patstr);
outtextxy(midx, midy+2*textheight("W"), colstr);

/* clean up */
getch();
closegraph();
return 0;
}


函数名: getftime
功 能: 取文件日期和时间
用 法: int getftime(int handle, struct ftime *ftimep);
程序例:

#include
#include

int main(void)
{
FILE *stream;
struct ftime ft;

if ((stream = fopen("TEST.$$$",
"wt")) == NULL)
{
fprintf(stderr,
"Cannot open output file./n");
return 1;
}
getftime(fileno(stream), &ft);
printf("File time: %u:%u:%u/n",
ft.ft_hour, ft.ft_min,
ft.ft_tsec * 2);
printf("File date: %u/%u/%u/n",
ft.ft_month, ft.ft_day,
ft.ft_year+1980);
fclose(stream);
return 0;
}


函数名: getgraphmode
功 能: 返回当前图形模式
用 法: int far getgraphmode(void);
程序例:

#include
#include
#include
#include

int main(void)
{
/* request auto detection */
int gdriver = DETECT, gmode, errorcode;
int midx, midy, mode;
char numname[80], modename[80];

/* initialize graphics and local variables */
initgraph(&gdriver, &gmode, "");

/* read result of initialization */
errorcode = graphresult();
/* an error occurred */
if (errorcode != grOk)
{
printf("Graphics error: %s/n",
grapherrormsg(errorcode));
printf("Press any key to halt:");
getch();
/* terminate with an error code */
exit(1);
}

midx = getmaxx() / 2;
midy = getmaxy() / 2;

/* get mode number and name strings */
mode = getgraphmode();
sprintf(numname,
"%d is the current mode number.",
mode);
sprintf(modename,
"%s is the current graphics mode",
getmodename(mode));

/* display the information */
settextjustify(CENTER_TEXT, CENTER_TEXT);
outtextxy(midx, midy, numname);
outtextxy(midx, midy+2*textheight("W"),
modename);

/* clean up */
getch();
closegraph();
return 0;
}


函数名: getftime
功 能: 取文件日期和时间
用 法: int getftime(int handle, struct ftime *ftimep);
程序例:

#include
#include

int main(void)
{
FILE *stream;
struct ftime ft;

if ((stream = fopen("TEST.$$$",
"wt")) == NULL)
{
fprintf(stderr,
"Cannot open output file./n");
return 1;
}
getftime(fileno(stream), &ft);
printf("File time: %u:%u:%u/n",
ft.ft_hour, ft.ft_min,
ft.ft_tsec * 2);
printf("File date: %u/%u/%u/n",
ft.ft_month, ft.ft_day,
ft.ft_year+1980);
fclose(stream);
return 0;
}



函数名: getgraphmode
功 能: 返回当前图形模式
用 法: int far getgraphmode(void);
程序例:

#include
#include
#include
#include

int main(void)
{
/* request auto detection */
int gdriver = DETECT, gmode, errorcode;
int midx, midy, mode;
char numname[80], modename[80];

/* initialize graphics and local variables */
initgraph(&gdriver, &gmode, "");

/* read result of initialization */
errorcode = graphresult();
/* an error occurred */
if (errorcode != grOk)
{
printf("Graphics error: %s/n",
grapherrormsg(errorcode));
printf("Press any key to halt:");
getch();
/* terminate with an error code */
exit(1);
}

midx = getmaxx() / 2;
midy = getmaxy() / 2;

/* get mode number and name strings */
mode = getgraphmode();
sprintf(numname,
"%d is the current mode number.",
mode);
sprintf(modename,
"%s is the current graphics mode",
getmodename(mode));

/* display the information */
settextjustify(CENTER_TEXT, CENTER_TEXT);
outtextxy(midx, midy, numname);
outtextxy(midx, midy+2*textheight("W"),
modename);

/* clean up */
getch();
closegraph();
return 0;
}

函数名: getimage
功 能: 将指定区域的一个位图存到主存中
用 法: void far getimage(int left, int top, int right, int bottom,
void far *bitmap);
程序例:

#include
#include
#include
#include
#include

void save_screen(void far *buf[4]);
void restore_screen(void far *buf[4]);

int maxx, maxy;

int main(void)
{
int gdriver=DETECT, gmode, errorcode;
void far *ptr[4];

/* auto-detect the graphics driver and mode */
initgraph(&gdriver, &gmode, "");
errorcode = graphresult(); /* check for any errors */
if (errorcode != grOk)
{
printf("Graphics error: %s/n", grapherrormsg(errorcode));
printf("Press any key to halt:");
getch();
exit(1);
}
maxx = getmaxx();
maxy = getmaxy();

/* draw an image on the screen */
rectangle(0, 0, maxx, maxy);
line(0, 0, maxx, maxy);
line(0, maxy, maxx, 0);

save_screen(ptr); /* save the current screen */
getch(); /* pause screen */
cleardevice(); /* clear screen */
restore_screen(ptr); /* restore the screen */
getch(); /* pause screen */

closegraph();
return 0;
}

void save_screen(void far *buf[4])
{
unsigned size;
int ystart=0, yend, yincr, block;

yincr = (maxy+1) / 4;
yend = yincr;
size = imagesize(0, ystart, maxx, yend); /* get byte size of image */

for (block=0; block<=3; block++)
{
if ((buf[block] = farmalloc(size)) == NULL)
{
closegraph();
printf("Error: not enough heap space in save_screen()./n");
exit(1);
}

getimage(0, ystart, maxx, yend, buf[block]);
ystart = yend + 1;
yend += yincr + 1;
}
}

void save_screen(void far *buf[4])
{
unsigned size;
int ystart=0, yend, yincr, block;

yincr = (maxy+1) / 4;
yend = yincr;
size = imagesize(0, ystart, maxx, yend); /* get byte size of image */

for (block=0; block<=3; block++)
{
if ((buf[block] = farmalloc(size)) == NULL)
{
closegraph();
printf("Error: not enough heap space in save_screen()./n");
exit(1);
}

getimage(0, ystart, maxx, yend, buf[block]);
ystart = yend + 1;
yend += yincr + 1;
}
}

void restore_screen(void far *buf[4])
{
int ystart=0, yend, yincr, block;

yincr = (maxy+1) / 4;
yend = yincr;

for (block=0; block<=3; block++)
{
putimage(0, ystart, buf[block], COPY_PUT);
farfree(buf[block]);
ystart = yend + 1;
yend += yincr + 1;
}
}


函数名: getlinesettings
功 能: 取当前线型、模式和宽度
用 法: void far getlinesettings(struct linesettingstype far *lininfo):
程序例:

#include
#include
#include
#include

/* the names of the line styles supported */
char *lname[] = { "SOLID_LINE",
"DOTTED_LINE",
"CENTER_LINE",
"DASHED_LINE",
"USERBIT_LINE"
};

int main(void)
{
/* request auto detection */
int gdriver = DETECT, gmode, errorcode;
struct linesettingstype lineinfo;
int midx, midy;
char lstyle[80], lpattern[80], lwidth[80];

/* initialize graphics and local variables */
initgraph(&gdriver, &gmode, "");

/* read result of initialization */
errorcode = graphresult();
if (errorcode != grOk) /* an error occurred */
{
printf("Graphics error: %s/n", grapherrormsg(errorcode));
printf("Press any key to halt:");
getch();
exit(1); /* terminate with an error code */
}

midx = getmaxx() / 2;
midy = getmaxy() / 2;

/* get information about current line settings */
getlinesettings(&lineinfo);

/* convert line information into strings */
sprintf(lstyle, "%s is the line style.",
lname[lineinfo.linestyle]);
sprintf(lpattern, "0x%X is the user-defined line pattern.",
lineinfo.upattern);
sprintf(lwidth, "%d is the line thickness.",
lineinfo.thickness);

/* display the information */
settextjustify(CENTER_TEXT, CENTER_TEXT);
outtextxy(midx, midy, lstyle);
outtextxy(midx, midy+2*textheight("W"), lpattern);
outtextxy(midx, midy+4*textheight("W"), lwidth);

/* clean up */
getch();
closegraph();
return 0;
}


函数名: getmaxcolor
功 能: 返回可以传给函数setcolor的最大颜色值
用 法: int far getmaxcolor(void);
程序例:

#include
#include
#include
#include

int main(void)
{
/* request auto detection */
int gdriver = DETECT, gmode, errorcode;
int midx, midy;
char colstr[80];

/* initialize graphics and local variables
*/ initgraph(&gdriver, &gmode, "");

/* read result of initialization */
errorcode = graphresult();
if (errorcode != grOk) /* an error occurred */
{
printf("Graphics error: %s/n", grapherrormsg(errorcode));
printf("Press any key to halt:");
getch();
exit(1); /* terminate with an error code */
}

midx = getmaxx() / 2;
midy = getmaxy() / 2;

/* grab the color info. and convert it to a string */
sprintf(colstr, "This mode supports colors 0..%d", getmaxcolor());

/* display the information */
settextjustify(CENTER_TEXT, CENTER_TEXT);
outtextxy(midx, midy, colstr);

/* clean up */
getch();
closegraph();
return 0;
}



函数名: getmaxx
功 能: 返回屏幕的最大x坐标
用 法: int far getmaxx(void);
程序例:

#include
#include
#include
#include

int main(void)
{
/* request auto detection */
int gdriver = DETECT, gmode, errorcode;
int midx, midy;
char xrange[80], yrange[80];

/* initialize graphics and local variables */
initgraph(&gdriver, &gmode, "");

/* read result of initialization */
errorcode = graphresult();
if (errorcode != grOk) /* an error occurred */
{
printf("Graphics error: %s/n", grapherrormsg(errorcode));
printf("Press any key to halt:");
getch();
exit(1); /* terminate with an error code */
}

midx = getmaxx() / 2;
midy = getmaxy() / 2;

/* convert max resolution values into strings */
sprintf(xrange, "X values range from 0..%d", getmaxx());
sprintf(yrange, "Y values range from 0..%d", getmaxy());

/* display the information */
settextjustify(CENTER_TEXT, CENTER_TEXT);
outtextxy(midx, midy, xrange);
outtextxy(midx, midy+textheight("W"), yrange);

/* clean up */
getch();
closegraph();
return 0;
}


函数名: getmaxy
功 能: 返回屏幕的最大y坐标
用 法: int far getmaxy(void);
程序例:

#include
#include
#include
#include

int main(void)
{
/* request auto detection */
int gdriver = DETECT, gmode, errorcode;
int midx, midy;
char xrange[80], yrange[80];

/* initialize graphics and local variables */
initgraph(&gdriver, &gmode, "");

/* read result of initialization */
errorcode = graphresult();
if (errorcode != grOk) /* an error occurred */
{
printf("Graphics error: %s/n", grapherrormsg(errorcode));
printf("Press any key to halt:");
getch();
exit(1); /* terminate with an error code */
}

midx = getmaxx() / 2;
midy = getmaxy() / 2;

/* convert max resolution values into strings */
sprintf(xrange, "X values range from 0..%d", getmaxx());
sprintf(yrange, "Y values range from 0..%d", getmaxy());

/* display the information */
settextjustify(CENTER_TEXT, CENTER_TEXT);
outtextxy(midx, midy, xrange);
outtextxy(midx, midy+textheight("W"), yrange);

/* clean up */
getch();
closegraph();
return 0;
}

函数名: getmodename
功 能: 返回含有指定图形模式名的字符串指针
用 法: char *far getmodename(int mode_name);
程序例:

#include
#include
#include
#include

int main(void)
{
/* request autodetection */
int gdriver = DETECT, gmode, errorcode;
int midx, midy, mode;
char numname[80], modename[80];

/* initialize graphics and local variables */
initgraph(&gdriver, &gmode, "");

/* read result of initialization */
errorcode = graphresult();
if (errorcode != grOk) /* an error occurred */
{
printf("Graphics error: %s/n", grapherrormsg(errorcode));
printf("Press any key to halt:");
getch();
exit(1); /* terminate with an error code */
}

midx = getmaxx() / 2;
midy = getmaxy() / 2;

/* get mode number and name strings */
mode = getgraphmode();
sprintf(numname, "%d is the current mode number.", mode);
sprintf(modename, "%s is the current graphics mode.", getmodename(mode));

/* display the information */
settextjustify(CENTER_TEXT, CENTER_TEXT);
outtextxy(midx, midy, numname);
outtextxy(midx, midy+2*textheight("W"), modename);

/* clean up */
getch();
closegraph();
return 0;
}


double fabs(double x);

返回双精度x的绝对值。


void far *farcalloc(unsigned long nunits,unsigned long unitsz);

堆中给含有nu从远nits个元素的,每个元素占用unitsz个字节长的数组分配存贮区。
成功是返回指向新分配的内存块的指针;若存贮空间不够,返回NULL。

 

unsigned long farcoreleft(void);

返回远堆中未用存贮区的大小。


void farfree(void far *block);

释放远堆中以前所分配内存块。


void far *farmalloc(unsigned long nbytes);

从远堆分配长nbytes字节的内存块,返回新地址。


void far *farrealloc(void far *oldblock,unsigned long nbytes);

调整已分配的内存块的大小为nbytes。需要的话,可把块中的内容复制到新位置。要注意:所有的可用的RAM可被分配,大于64K的块可被分配。
远指针用于存取被分配的块。返回重新分配的内存块的地址。若存贮块重新分配失败,返回NULL。

struct fcb {

char fcb_drive; /* 0 = default, 1 = A, 2 = B */

char fcb_name[8]; /* File name */

char fcb_ext[3]; /* File extension */

short fcb_curblk; /* Current block number */

short fcb_recsize; /* Logical record size in bytes */

long fcb_filsize; /* File size in bytes */

short fcb_date; /* Date file was last written */

char fcb_resv[10]; /* Reserved for DOS */

char fcb_currec; /* Current record in block */

long fcb_random; /* Random record number */

};

 

int fclose(FILE *stream);

关闭一个流。

成功返回0;失败是返回EOF。

int fcloseall(void);

关闭所有打开的流,除了stdin,stdout,stdprn,stderr和stdaux。


char *fcvt(double value,int ndig,int *dec,int *sign);

把浮点数转换成字符串,把浮点数value转换成长度为ndig的以空字符终结的字符串,返回一个指向这个字符串的指针,相对于串的开始处,
小数点的位置,由dec间接存贮,dec若为负值,表示小数点在返回的字符串的左边。返回的字符串本身不带小数点。如果value的符号为负,由sign指向的值非零;否则它是零。

 

FILE *fdopen(int handle,char *type);

把流与一个文件描述字相联系地打开。fdopen使流stream与一个从creat,dup,dup2或open得到的文件描述字相联系。流的类型type必须与打开文件描述字handle的模式相匹配。

类型字符串type可以是下列值之一:

r,打开用于只读;

w,创建用于写;

a,打开用于写在原有内容后面,文件不存在时创建用于写;

r+,打开已存在的文件用于更新(读和写);

a+,添加打开,文件不存在时创建,在末尾更新。成功时返回新打开的流。出错时返回NULL。

 

int feof(FILE *stream);

测试所给stream的文件尾标记的宏。

若检测到文件尾标记EOF或Ctrl-z返回非零值;否则,返回0。


#include

int ferror(FILE *stream);

测试给定流读写错误的宏。

若检测到给定流上的错误返回非0值。

struct ffblk {

char ff_reserved[21];

char ff_attrib;

unsigned ff_ftime;

unsigned ff_fdate;

long ff_fsize;

char ff_name[13];

};


int fflush(FILE *stream);

清除输入流的缓冲区,使它仍然打开,并把输出流的缓冲区的内容写入它所联系的文件中。成功时返回0,出错时返回EOF。

 

int fgetc(FILE *stream);

从流中读取下一个字符。

成功是返回输入流中的下一个字符;至文件结束或出错时返回EOF。


int fgetchar(void);

从标准输入流中读取字符,时定义为getc(stdin)的宏。
返回输入流stdin中的下一个字符,它已被转换成为无符号扩展的整形值。遇到出错或文件结束时返回EOF。

 

int fgetpos(FILE stream,fpos_t *pos);

取得当前文件指针。

fgetpos把与stream相联系的文件指针的位置保存在pos所指的地方。

其中,类型fpos_t在stdio.h中定义为

typeddf long fpos_t;

成功时返回0;失败时,返回非0值。


char *fgets(char *s,int n,FILE *stream);

成行读。

从流stream读n-1个字符,或遇换行符'/n'为止,把读出的内容,存入s中。与gets不同,fgets在s未尾保留换行符。一个空字节被加入到s,用来标记串的结束。
成功时返回s所指的字符串;在出错或遇到文件结束时返回NULL。

 

long filelength(int handle);

返回与handle相联系的文件长度的字节数,出错时返回-1L。

 

int fileno(FILE *stream);

返回与stream相联系的文件描述字


int fileno(FILE *stream);

返回与stream相联系的文件描述字。


enum fill_patterns { /* Fill patterns for get/setfillstyle */

0 EMPTY_FILL, /* fills area in background color */

1 SOLID_FILL, /* fills area in solid fill color */

2 LINE_FILL, /* --- fill */

3 LTSLASH_FILL, /* /// fill */

4 SLASH_FILL, /* /// fill with thick lines */

5 BKSLASH_FILL, /* /// fill with thick lines */

6 LTBKSLASH_FILL, /* /// fill */

7 HATCH_FILL, /* light hatch fill */

8 XHATCH_FILL, /* heavy cross hatch fill */

9 INTERLEAVE_FILL, /* interleaving line fill */

10 WIDE_DOT_FILL, /* Widely spaced dot fill */

11 CLOSE_DOT_FILL, /* Closely spaced dot fill */

12 USER_FILL /* user defined fill */

 

void far fillellipse(int x,int y,int xradius,int yradius);

画一填充椭圆。
以(x,y)为中心,以xradius和yradius为水平和垂直半轴,用当前颜色画边线,画一椭圆,用当前填充颜色和填充方式填充。

 

int findfirst(const char *pathname,struct ffblk *ffblk,int attrib);

搜索磁盘目录。开始通过DOS系统调用0x4E对磁盘目录进行搜索。pathname中可含有要找的盘区路径文件名。
文件名中可含有通配符(如*或?)。如果找到了匹配的文件,把文件目录信息填入ffblk结构。

attrib是MS-DOS的文件属性字节,用于在搜索过程中选择符合条件的文件。
attrib可以是在dos.h中定义的下列可取值之一:FA_RDONLY,只读;FA_HIDDEN隐藏;FA_SYSTEM系统文件;FA_LABEL卷标;FA_DIREC,目录;FA_ARCH,档案.可参考>.

结构ffblk的格式如下:

struct ffblk{

char ff_reserved[21}; /*由DOS保留*/

char ff_attrib; /*属性查找*/

int ff_ftime; /*文件时间*/

int f_fdate; /*文件日期*/

long ff_fsize; /*文件大小*/

char ff_name[13}; /*找到的文件名*/

在成功的地找到了与搜索路径pathname相匹配的文件名后返回0;否则返回-1。


int findnext(xtruct ffblk *ffblk);继续按findfirst的pathname搜索磁盘目录。

成功地找到了与搜索路径pathname相匹配的后续文件名后返回0;否则返回-1。


void far floodfill(int x,int y, int border);

填充一个有界的区域。


double floor(double x);

返回〈=x的用双精度浮点数表示的最大整数。


int flushall(void);

清除所有缓冲区。

清除所有与打开输入流相联系的缓冲区,并把所有和打开输出流相联系的缓冲区的内容写入到各自的文件中,跟在flushall后面的读操作,从输入文件中读新数据到缓冲区中。
返回一个表示打开输入流和输出流总数的整数。


couble fmod (double x, double y);

返回x对y的模,即x/y的余数。


void fnmerge(char *path,const char *drive,const char *dir,const char *name,const char *ext);

由给定的盘区路径文件名扩展名等组成部分建立path。

如果drive给出X:,dir给出/DIR/SUBDIR/,name给出NAME,和.ext给出.EXT,根据给定的组成部分,可建立一个完整的盘区路径文件名path为:

X:/DIR/CUBDIR/NAME.EXT

 

int fnsplit(const char *path,char *drive,char *cir,char *name,char *ext);

可把由path给出的盘区路径文件名扩展名分解成为各自的组成部分.返回一整型数.


FILE*fopen (const char *filemane,const char *mode);

打开文件filemane返回相联系的流;出错返回NULL。

mode字符串的可取值有:r,打开用于读;w,打开用于写;a,打开用于在原有内容之后写;r+,打开已存在的文件用于更新(读和写);w+创建新文件用于更新;a+,打开用于在原有内容之后更新,若文件不存在就创建。


unsigned FP_OFF(void far *farptr);

返回远指针farptr的地址偏移量。

 

int fprintf(FILE *stream,const char *format[,argument,...]);

照原样抄写格式串format的内容到流stream中,每遇到一个%,就按规定的格式,依次输出一个表达式argument的值到流stream中,返回写的字符个数。出错时返回EOF。

 

FILE *stream;

void main( void )

{

long l;

float fp;

char s[81];

char c;

stream = fopen( "fscanf.txt", "w+" );

if( stream == NULL )

printf( "The file fscanf.out was not opened/n" );

else {fprintf( stream, "%s %ld %f%c", "a-string",65000, 3.14159, 'x' );

/* Set pointer to beginning of file: */

fseek( stream, 0L, SEEK_SET );

/* Read data back from file: */

fscanf( stream, "%s", s );

fscanf( stream, "%ld", &l );

fscanf( stream, "%f",

fscanf( stream, "%c", &c );/* Output data read: */

printf( "%s/n", s );

printf( "%ld/n", l );

printf( "%f/n", fp );

printf( "%c/n", c );

fclose( stream ); }

}


int fputc(int c,FILE *stream);

写一个字符到流中。

成功时返回所写的字符,失败或出错时返回EOF。

 

int fputchar(int c);

送一个字符到屏幕。

等价于fputc(c,stdout);成功时返回所写的字符,失败或出错时返回EOF。

 

int fputs(const char *s,FILE *stream);

把s所指的以空字符终结的字符串送入流中,不加换行符'/n',不拷贝串结束符'/0'。

成功时返回最后的字符,出错时返回EOF。

 

size_t fread(void *ptr,size_t size,size_t n,FILE *stream);

从所给的输入流stream中读取的n项数据,每一项数据长度为size字节,到由ptr所指的块中。

成功时返回所读的数据项数(不是字节数);遇到文件结束或出错时可能返回0。

void free(void *block);

释放先前分配的首地址为block的内存块。


int freemem(unsigned segx);

释放先前由allocmem分配的段地址为segx的内存块。

 

FILE *freopen(const char *filename,const char *mode,FILE *stream);

用filename所指定的文件代替打开的流stream所指定的文件。返回stream,出错时返回NULL。


double frexp(double x int *exponent);

将x分解成尾数合指数。

将给出的双精度数x分解成为在0.5和1之间尾数m和整形的指数n,使原来的x=m*(2的n次方),将整形指数n存入exponent所指的地址中,返回尾数m。


int fscan(FILE *stream,char *format,address,...);

fscanf扫描输入字段,从流stream读入,每读入一个字段,就依次按照由format所指的格式串中取一个从%开始的格式进行格式化之后存入对应的一个地址address中。
返回成功地扫描,转换和存贮输入字段的个数,遇文件结束返回EOF。

 

FILE *stream;

void main( void )

{

long l;

float fp;

char s[81];

char c;

stream = fopen( "fscanf.txt", "w+" );

if( stream == NULL )

printf( "The file fscanf.out was not opened/n" );

else {fprintf( stream, "%s %ld %f%c", "a-string",65000, 3.14159, 'x' );

/* Set pointer to beginning of file: */

fseek( stream, 0L, SEEK_SET );

/* Read data back from file: */

fscanf( stream, "%s", s );

fscanf( stream, "%ld", &l );

fscanf( stream, "%f",

fscanf( stream, "%c", &c );/* Output data read: */

printf( "%s/n", s );

printf( "%ld/n", l );

printf( "%f/n", fp );

printf( "%c/n", c );

fclose( stream ); }

}


int fseek(FILE *stream,long offset,int whence);

在流上重新定位文件结构的位置。fseek设置与流stream相联系的文件指针到新的位置,新位置与whence给定的文件位置的距离为offset字节。
whence的取值必须是0,1或2中的一个,分别代表在stdio.h中定义的三个符号常量:

0是SEEK_SET,是文件开始位置;

1是SEEK_CUR,是当前的指针位置;

2时SEEK_END,是文件末尾。

调用了fseek之后,在更新的文件位置上,下一个操作可以是输入;也可以是输出。成功地移动了指针时,fseek返回0;出错或失败时返回非0值。

例:

#include

FILE *stream;

void main( void )

{

long l;

float fp;

char s[81];

char c;

stream = fopen( "fscanf.txt", "w+" );

if( stream == NULL )

printf( "The file fscanf.out was not opened/n" );

else {fprintf( stream, "%s %ld %f%c", "a-string",65000, 3.14159, 'x' );

/* Set pointer to beginning of file: */

fseek( stream, 0L, SEEK_SET );

/* Read data back from file: */

fscanf( stream, "%s", s );

fscanf( stream, "%ld", &l );

fscanf( stream, "%f",

fscanf( stream, "%c", &c );/* Output data read: */

printf( "%s/n", s );

printf( "%ld/n", l );

printf( "%f/n", fp );

printf( "%c/n", c );

fclose( stream ); }

}


int fsetpos(FILE *stream,const fpos_t *pos);

fsetpos把与stream相联系的文件指针置于新的位置。这个新的位置是先前对此流调用fgetpos所得的值。
fsetpos清除stream所指文件的文件结束标志,并消除对该文件的所有ungetc操作。在调用fsetpos之后,文件的下一操作可以是输入或输出。

调用fsetpos成功时返回0;若失败,返回非0值。


int fstat(int handle,struct stat *statbuf);

把与handle相联系的打开文件或目录的信息存入到statbuf所指的定义在sys/stat.h中的stat结构中。成功时返回0;出错时返回-1。

 

long int ftell(FILE *stream);

返回流stream中当前文件指针位置。偏移量是文件开始算起的字节数。出错时返回-1L,是长整数的-1值。

 

void ftime(struct timeb *buf);

把当前时间存入到在sys/timeb.h中定义的timeb结构中。


size_t fwrite(const void *ptr,size_t size,size_t n,FILE *stream);

fwrite从指针ptr开始把n个数据项添加到给定输出流stream,每个数据项的长度为size个字节。

成功是返回确切的数据项数(不是字节数);出错时返回短(short)计数值。可能是0

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值