/* names of the various cards supported */ char *dname[] = { \"requests detection\ \"a CGA\ \"an MCGA\ \"an EGA\ \"a K EGA\
\"a monochrome EGA\ \"an IBM 8514\
\"a Hercules monochrome\ \"an AT&T 6300 PC\ \"a VGA\
\"an IBM 3270 PC\" };
int main(void) {
/* returns detected hardware info. */ int gdriver, gmode, errorcode;
/* detect graphics hardware available */ detectgraph(&gdriver, &gmode); /* read result of detectgraph call */ 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 */ }
/* display the information detected */ clrscr();
printf(\"You have %s video display \\ card.\\n\
printf(\"Press any key to halt:\"); getch(); return 0; }
函数名: difftime
功 能: 计算两个时刻之间的时间差
用 法: double difftime(time_t time2, time_t time1); 程序例:
#include #include #include #include int main(void) {time_t first, second;
clrscr();
first = time(NULL); /* Gets system time */
delay(2000); /* Waits 2 secs */ second = time(NULL); /* Gets system time again */
printf(\"The difference is: %f \\ seconds\\n\ getch(); return 0; }
函数名: disable 功 能: 屏蔽中断
用 法: void disable(void); 程序例:
/***NOTE: This is an interrupt service routine. You cannot compile this program with Test Stack Overflow turned on and get an executable file that operates correctly. */ #include #include #include #define INTR 0X1C /* The clock tick interrupt */
void interrupt ( *oldhandler)(void); int count=0;
void interrupt handler(void) {
/* disable interrupts during the handling of the interrupt */ disable();
/* increase the global counter */ count++;
/* reenable interrupts at the end of the handler */ enable();
/* call the old routine */ oldhandler(); }
int main(void) {
/* save the old interrupt vector */ oldhandler = getvect(INTR);
/* install the new interrupt handler */ setvect(INTR, handler);
/* loop until the counter exceeds 20 */ while (count < 20)
printf(\"count is %d\\n\/* reset the old interrupt handler */ setvect(INTR, oldhandler); return 0; }
函数名: div
功 能: 将两个整数相除, 返回商和余数 用 法: div_t (int number, int denom); 程序例:
#include #include div_t x;int main(void) {
x = div(10,3);
printf(\"10 div 3 = %d remainder %d\\n\ return 0; }
函数名: dosexterr
功 能: 获取扩展DOS错误信息
用 法: int dosexterr(struct DOSERR *dblkp); 程序例:
#include #include int main(void) {FILE *fp;
struct DOSERROR info;
fp = fopen(\"perror.dat\
if (!fp) perror(\"Unable to open file for
reading\");
dosexterr(&info);
printf(\"Extended DOS error \\ information:\\n\");
printf(\" Extended error: \\ %d\\n\
printf(\" Class: \\ %x\\n\
printf(\" Action: \\ %x\\n\
printf(\" Error Locus: \\ %x\\n\ return 0; }
函数名: dostounix
功 能: 转换日期和时间为UNIX时间格式
用 法: long dostounix(struct date *dateptr, struct time *timeptr); 程序例:
#include #include #include #include int main(void) {time_t t;
struct time d_time; struct date d_date; struct tm *local; getdate(&d_date); gettime(&d_time);
t = dostounix(&d_date, &d_time); local = localtime(&t);
printf(\"Time and Date: %s\\n\ asctime(local));
return 0; }
函数名: drawpoly 功 能: 画多边形
用 法: void far drawpoly(int numpoints, int far *polypoints); 程序例:
#include #include #include #include int main(void) {
/* request auto detection */
int gdriver = DETECT, gmode, errorcode; int maxx, maxy; /* our polygon array */ int poly[10];
/* 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();
/* terminate with an error code */ exit(1); }
maxx = getmaxx(); maxy = getmaxy();
poly[0] = 20; /* 1st vertext */ poly[1] = maxy / 2;
poly[2] = maxx - 20; /* 2nd */ poly[3] = 20;
poly[4] = maxx - 50; /* 3rd */ poly[5] = maxy - 20;
poly[6] = maxx / 2; /* 4th */ poly[7] = maxy / 2; /*
drawpoly doesn't automatically close the polygon, so we close it. */
poly[8] = poly[0]; poly[9] = poly[1]; /* draw the polygon */ drawpoly(5, poly); /* clean up */ getch();
closegraph(); return 0; }
函数名: dup
功 能: 复制一个文件句柄 用 法: int dup(int handle); 程序例:
#include #include #include #include void flush(FILE *stream); int main(void) {
FILE *fp;
char msg[] = \"This is a test\";
/* create a file */
fp = fopen(\"DUMMY.FIL\ /* write some data to the file */ fwrite(msg, strlen(msg), 1, fp); clrscr();
printf(\"Press any key to flush \\ DUMMY.FIL:\"); getch();
/* flush the data to DUMMY.FIL without closing it */ flush(fp);
printf(\"\\nFile was flushed, Press any \\ key to quit:\"); getch(); return 0; }
void flush(FILE *stream) {
int duphandle;
/* flush TC's internal buffer */ fflush(stream);
/* make a duplicate file handle */ duphandle = dup(fileno(stream));
/* close the duplicate handle to flush the DOS buffer */ close(duphandle); }
函数名: dup2
功 能: 复制文件句柄
用 法: int dup2(int oldhandle, int newhandle); 程序例:
#include #include #include #include int main(void) {#define STDOUT 1
int nul, oldstdout;
char msg[] = \"This is a test\";
/* create a file */
nul = open(\"DUMMY.FIL\ S_IREAD | S_IWRITE);
/* create a duplicate handle for standard output */
oldstdout = dup(STDOUT); /*
redirect standard output to DUMMY.FIL by duplicating the file handle onto the file handle for standard output. */
dup2(nul, STDOUT);
/* close the handle for DUMMY.FIL */ close(nul);
/* will be redirected into DUMMY.FIL */ write(STDOUT, msg, strlen(msg)); /* restore original standard output handle */
dup2(oldstdout, STDOUT);
/* close duplicate handle for STDOUT */ close(oldstdout); return 0; }