天天看點

Turbo C 2.0、Borland C++庫函數及用例

                    Turbo C 2.0、Borland C++庫函數及用例

字母A開頭函數函數名: abort

功 能: 異常終止一個程序

用 法: void abort(void);

程式例:

#include <stdio.h>

#include <stdlib.h>int main(void)

{

printf("Calling abort()/n");

abort();

return 0;

}

函數名: abs

功 能: 求整數的絕對值

用 法: int abs(int i);

程式例:

#include <stdio.h>

#include <math.h>int main(void)

{

int number = -1234; printf("number:%d absolute value:%d/n",number,abs(number));

return 0;

}

函數名: absread

功 能: 絕對磁盤扇區讀資料

用 法: int absread( int drive, int nsects, int sectno,

void *buffer );

程式例:

#include <stdio.h>

#include <conio.h>

#include <process.h>

#include <dos.h>int main(void)

{

int i, strt, ch_out, sector;

char buf[512]; printf("Insert diskette into drive A press any key/n");

getch();

sector = 0;

if (absread(0, 1, sector, &buf) != 0)

{ perror("Disk problem");

exit(1); }

printf("Read OK/n");

strt = 3;

for (i=0; i<80; i++)

{ ch_out = buf[strt+i];

putchar(ch_out); }

printf("/n");

return(0); }

函數名: abswrite

功 能: 絕對磁盤扇區寫資料

用 法: int abswrite( int drive, int nsects, in tsectno,

void *buffer);

程式例:

#include <stdio.h>

#include <conio.h>

#include <process.h>

#include <dos.h>int main(void)

{ int i, strt, ch_out, sector;

char buf[512]; printf("Insert diskette into drive A press any key/n");

getch();

sector = 0;

if (absread(0, 1, sector, &buf) != 0)

{ perror("Disk problem");

exit(1); }

printf("Read OK/n");

strt = 3;

for (i=0; i<80; i++)

{ ch_out = buf[strt+i];

putchar(ch_out); }

printf("/n");

return(0);}

函數名: access

功 能: 确定檔案的通路權限

用 法: int access(const char *filename, int amode);

程式例:

#include <stdio.h>

#include <io.h>int file_exists(char *filename);

int main(void)

{ printf("Does NOTEXIST.FIL exist: %s/n",

file_exists("NOTEXISTS.FIL") ? "YES" : "NO");

return 0;

}int file_exists(char *filename)

{

return (access(filename, 0) == 0);

}

函數名: acos

功 能: 反餘弦函數

用 法: double acos(double x);

程式例:

#include <stdio.h>

#include <math.h>int main(void)

{ double result;

double x = 0.5;

result = acos(x);

printf("The arc cosine of %lf is %lf/n", x, result);

return 0;}

函數名: allocmem

功 能: 配置設定DOS存儲段

用 法: int allocmem(unsigned size, unsigned *seg);

程式例:

#include <dos.h>

#include <alloc.h>

#include <stdio.h>int main(void)

{

unsigned int size, segp;

int stat;

size = 64;

stat = allocmem(size, &segp); if (stat == -1)

printf("Allocated memory at segment: %x/n", segp);

else

printf("Failed: maximum number of paragraphs available/

is %u/n", stat);

return 0;

}

函數名: arc

功 能: 畫一弧線

用 法: void far arc( int x,int y,int stangle,int endangle,

int radius );

程式例:

#include <graphics.h>

#include <stdlib.h>

#include <stdio.h>

#include <conio.h>int main(void)

{

int gdriver = DETECT, gmode, errorcode;

int midx, midy; int stangle = 45, endangle = 135;

int radius = 100;

initgraph(&gdriver, &gmode, "");

errorcode = graphresult();

if (errorcode != grOk)

{

printf("Graph err: %s/n", grapherrormsg(errorcode));

printf("Press any key to halt:");

getch();

exit(1);

} midx = getmaxx() / 2;

midy = getmaxy() / 2;

setcolor(getmaxcolor());

arc(midx, midy, stangle, endangle, radius);

getch();

closegraph();

return 0;

}

函數名: asctime

功 能: 轉換日期和時間為ASCII碼

用 法: char *asctime(const struct tm *tblock);

程式例:

#include <stdio.h>

#include <string.h>

#include <time.h>int main(void)

{

struct tm t;

char str[80];

t.tm_sec = 1;

t.tm_min = 30;

t.tm_hour = 9;

t.tm_mday = 22;

t.tm_mon = 11;

t.tm_year = 56;

t.tm_wday = 4;

t.tm_yday = 0;

t.tm_isdst = 0;

strcpy(str, asctime(&t));

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

return 0;

}

函數名: asin

功 能: 反正弦函數

用 法: double asin(double x);

程式例:

#include <stdio.h>

#include <math.h>int main(void)

{ double result;

double x = 0.5;

result = asin(x);

printf("The arc sin of %lf is %lf/n", x, result);

return(0);

}

函數名: assert

功 能: 測試一個條件并可能使程式終止

用 法: void assert(int test);

程式例:

#include <assert.h>

#include <stdio.h>

#include <stdlib.h>struct ITEM {

int key;

int value;

};

void additem(struct ITEM *itemptr) {

assert(itemptr != NULL);

}int main(void)

{

additem(NULL);

return 0;

}

函數名: atan

功 能: 反正切函數

用 法: double atan(double x);

程式例:

#include <stdio.h>

#include <math.h>

int main(void)

{ double result;

double x = 0.5;

result = atan(x);

printf("The arc tangent of %lf is %lf/n", x, result);

return(0);

}

函數名: atan2

功 能: 計算Y/X的反正切值

用 法: double atan2(double y, double x);

程式例:

#include <stdio.h>

#include <math.h>int main(void)

{ double result;

double x = 90.0, y = 45.0;

result = atan2(y, x);

printf("The arc tangent ratio of %lf is %lf/n/

", (y/x),result);

return 0;

}

函數名: atexit

功 能: 注冊終止函數

用 法: int atexit(atexit_t func);

程式例:

#include <stdio.h>

#include <stdlib.h>void exit_fn1(void)

{ printf("Exit function #1 called/n");

}void exit_fn2(void)

{ printf("Exit function #2 called/n");

}int main(void)

{

atexit(exit_fn1);

atexit(exit_fn2);

return 0;

}

函數名: atof

功 能: 把字元串轉換成浮點數

用 法: double atof(const char *nptr);

程式例:#include <stdlib.h>

#include <stdio.h>

int main(void)

{ float f;

char *str = "12345.67";

f = atof(str); printf("string = %s float = %f/n", str, f);

return 0;}

函數名: atoi

功 能: 把字元串轉換成長整型數

用 法: int atoi(const char *nptr);

程式例:

#include <stdlib.h>

#include <stdio.h>int main(void)

{ int n;

char *str = "12345.67";

n = atoi(str);

printf("string = %s integer = %d/n", str, n);

return 0;

}

函數名: atol

功 能: 把字元串轉換成長整型數

用 法: long atol(const char *nptr);

程式例:

#include <stdlib.h>

#include <stdio.h>int main(void)

{ long l;

char *str = "98765432";

l = atol(lstr);

printf("string = %s integer = %ld/n", str, l);

return(0);

}字母B開頭函數

函數名: bar

功 能: 畫一個二維條形圖

用 法: void far bar(int left,int top,int right,int bottom);

程式例:#include <graphics.h>

#include <stdlib.h>

#include <stdio.h>

#include <conio.h>int main(void)

{

int gdriver = DETECT, gmode, errorcode;

int midx, midy, i;

initgraph(&gdriver, &gmode, "");

errorcode = graphresult();

if (errorcode != grOk)

{

printf("Graph err: %s/n", grapherrormsg(errorcode));

printf("Press any key to halt:");

getch();

exit(1);

}

midx = getmaxx() / 2;

midy = getmaxy() / 2;

for (i=SOLID_FILL; i<USER_FILL; i++)

{

setfillstyle(i, getmaxcolor());

bar(midx-50, midy-50, midx+50,

midy+50);

getch();

}

closegraph();

return 0;

}

函數名: bar3d

功 能: 畫一個三維條形圖

用 法: void far bar3d( int left, int top, int right,

int bottom, int depth,

int topflag);

程式例:

#include <graphics.h>

#include <stdlib.h>

#include <stdio.h>

#include <conio.h>int main(void)

{

int gdriver = DETECT, gmode, errorcode;

int midx, midy, i;

initgraph(&gdriver, &gmode, "");

errorcode = graphresult();

if (errorcode != grOk)

{

printf("Graph err: %s/n", grapherrormsg(errorcode));

printf("Press any key to halt:");

getch();

exit(1);

} midx = getmaxx() / 2;

midy = getmaxy() / 2;

for (i=EMPTY_FILL; i<USER_FILL; i++)

{

setfillstyle(i, getmaxcolor());

bar3d(midx-50, midy-50, midx+50, midy+50, 10, 1);

getch(); }

closegraph();

return 0;

}

函數名: bdos

功 能: DOS系統調用

用 法: int bdos(int dosfun,unsigned dosdx,unsigned dosal);

程式例:#include <stdio.h>

#include <dos.h>

char current_drive(void)

{

char curdrive;

curdrive = bdos(0x19, 0, 0);

return('A' + curdrive);

}int main(void)

{

printf("The current drive is %c:/n", current_drive());

return 0;

}

函數名: bdosptr

功 能: DOS系統調用

用 法: int bdosptr( int dosfun, void *argument,

unsigned dosal );

程式例:#include <string.h>

#include <stdio.h>

#include <dir.h>

#include <dos.h>

#include <errno.h>

#include <stdlib.h>#define BUFLEN 80int main(void)

{

char buffer[BUFLEN];

int test; printf("Enter full pathname of a directory/n");

gets(buffer); test = bdosptr(0x3B,buffer,0);

if(test)

{ printf("DOS error message: %d/n", errno);

exit (1);

} getcwd(buffer, BUFLEN);

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

}

函數名: bioscom

功 能: 串行I/O通信

用 法: int bioscom(int cmd, char abyte, int port);

程式例:

#include <bios.h>

#include <conio.h>#define COM1 0

#define DATA_READY 0x100

#define TRUE 1

#define FALSE 0#define SETTINGS ( 0x80 | 0x02 | 0x00 | 0x00)int main(void)

{

int in, out, status, DONE = FALSE; bioscom(0, SETTINGS, COM1);

cprintf("... BIOSCOM [ESC] to exit .../n");

while (!DONE)

{

status = bioscom(3, 0, COM1);

if (status & DATA_READY)

if ((out = bioscom(2, 0, COM1) & 0x7F) != 0)

putch(out); if (kbhit())

{

if ((in = getch()) == '/x1B')

DONE = TRUE;

bioscom(1, in, COM1);

}

}

return 0;

}

函數名: biosdisk

功 能: 軟硬碟I/O

用 法: int biosdisk( int cmd,int drive,int head,int track,

int sector,int nsects, void *buffer);

程式例:#include <bios.h>

#include <stdio.h>int main(void)

{

int result;

char buffer[512]; printf("Testing to see if drive a: is ready/n");

result = biosdisk(4,0,0,0,0,1,buffer);

result &= 0x02;

(result) ? (printf("Drive A: Ready/n")) :

(printf("Drive A: Not Ready/n"));

return 0;

}

函數名: biosequip

功 能: 檢查裝置

用 法: int biosequip(void);

程式例:#include <bios.h>

#include <stdio.h>int main(void)

{

int result;

char buffer[512]; printf("Testing to see if drive a: is ready/n");

result = biosdisk(4,0,0,0,0,1,buffer);

result &= 0x02;

(result) ? (printf("Drive A: Ready/n")) :

(printf("Drive A: Not Ready/n")); return 0;

}

函數名: bioskey

功 能: 直接使用BIOS服務的鍵盤接口

用 法: int bioskey(int cmd);

程式例:#include <stdio.h>

#include <bios.h>

#include <ctype.h>#define RIGHT 0x01

#define LEFT 0x02

#define CTRL 0x04

#define ALT 0x08int main(void)

{

int key, modifiers;

while (bioskey(1) == 0);

key = bioskey(0);

modifiers = bioskey(2); if (modifiers)

{

printf("[");

if (modifiers & RIGHT) printf("RIGHT");

if (modifiers & LEFT) printf("LEFT");

if (modifiers & CTRL) printf("CTRL");

if (modifiers & ALT) printf("ALT");

printf("]");

}

if (isalnum(key & 0xFF))

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

else printf("%#02x/n", key);

return 0;

}

函數名: biosmemory

功 能: 傳回存儲塊大小

用 法:int biosmemory(void);

程式例:

#include <stdio.h>

#include <bios.h>

int main(void)

{

int memory_size;

memory_size = biosmemory();

printf("RAM size = %dK/n",memory_size);

return 0;

}

函數名: biosprint

功 能: 直接使用BIOS服務的列印機I/O

用 法: int biosprint(int cmd, int byte, int port);

程式例:

#include <stdio.h>

#include <conio.h>

#include <bios.h>int main(void)

{

#define STATUS 2

#define PORTNUM 0 int status, abyte=0; printf("Please turn off your printer./

Press any key to continue/n");

getch();

status = biosprint(STATUS, abyte, PORTNUM);

if (status & 0x01)

printf("Device time out./n");

if (status & 0x08)

printf("I/O error./n"); if (status & 0x10)

printf("Selected./n");

if (status & 0x20)

printf("Out of paper./n"); if (status & 0x40)

printf("Acknowledge./n");

if (status & 0x80)

printf("Not busy./n"); return 0;

}

函數名: biostime

功 能: 讀取或設定BIOS時間

用 法: long biostime(int cmd, long newtime);

程式例:#include <stdio.h>

#include <bios.h>

#include <time.h>

#include <conio.h>int main(void)

{

long bios_time;

clrscr(); cprintf("The number of clock ticks since midnight/

is:/r/n");

cprintf("The number of seconds since midnight is:/r/n");

cprintf("The number of minutes since midnight is:/r/n");

cprintf("The number of hours since midnight is:/r/n");

cprintf("/r/nPress any key to quit:");

while(!kbhit())

{

bios_time = biostime(0, 0L); gotoxy(50, 1);

cprintf("%lu", bios_time); gotoxy(50, 2);

cprintf("%.4f", bios_time / CLK_TCK); gotoxy(50, 3);

cprintf("%.4f", bios_time / CLK_TCK / 60); gotoxy(50, 4);

cprintf("%.4f", bios_time / CLK_TCK / 3600);

}

return 0;

}

函數名: brk

功 能: 改變資料段空間配置設定

用 法: int brk(void *endds);

程式例:#include <stdio.h>

#include <alloc.h>int main(void)

{

char *ptr; printf("Changing allocation with brk()/n");

ptr = malloc(1); printf("Before brk() call:%lu bytes free/n",coreleft());

brk(ptr+1000);

printf(" After brk() call:%lu bytes free/n",coreleft());

return 0;

}

函數名: bsearch

功 能: 二分法搜尋

用 法: void *bsearch( const void *key, const void *base,

size_t *nelem, size_t width,

int(*fcmp)(const void *, const *));

程式例:

#include <stdlib.h>

#include <stdio.h>

#define NELEMS(arr) (sizeof(arr) / sizeof(arr[0]))

int numarray[] = {123, 145, 512, 627, 800, 933};

int numeric (const int *p1, const int *p2)

{

return(*p1 - *p2);

}int lookup(int key)

{

int *itemptr;

itemptr = bsearch (&key, numarray, NELEMS(numarray),

sizeof(int), (int(*)(const void *,const void *))numeric);

return (itemptr != NULL);

}int main(void)

{

if (lookup(512))

printf("512 is in the table./n");

else

printf("512 isn't in the table./n"); return 0;

}字母C開頭函數

函數名: cabs

功 能: 計算複數的絕對值

用 法: double cabs(struct complex z);

程式例:

#include <stdio.h>

#include <math.h>

int main(void)

{

struct complex z;

double val;

z.x = 2.0;

z.y = 1.0;

val = cabs(z); printf("The absolute value of %.2lfi %.2lfj is %.2lf/

", z.x, z.y, val);

return 0;

}

函數名: calloc

功 能: 配置設定主存儲器

用 法: void *calloc(size_t nelem, size_t elsize);

程式例:#include <stdio.h>

#include <alloc.h>int main(void)

{

char *str = NULL;

str = calloc(10, sizeof(char));

strcpy(str, "Hello");

printf("String is %s/n", str);

free(str);

return 0;

}

函數名: ceil

功 能: 向上舍入

用 法: double ceil(double x);

程式例:#include <math.h>

#include <stdio.h>int main(void)

{

double number = 123.54;

double down, up; down = floor(number); up = ceil(number); printf("original number %5.2lf/n", number);

printf("number rounded down %5.2lf/n", down);

printf("number rounded up %5.2lf/n", up); return 0;

}

函數名: cgets

功 能: 從控制台讀字元串

用 法: char *cgets(char *str);

程式例:#include <stdio.h>

#include <conio.h>int main(void)

{

char buffer[83];

char *p;

buffer[0] = 81; printf("Input some chars:");

p = cgets(buffer);

printf("/ncgets read %d characters: /"%s/"/n/

", buffer[1], p);

printf("The returned pointer is %p, buffer[0] is at %p/n/

", p, &buffer);

buffer[0] = 6; printf("Input some chars:");

p = cgets(buffer);

printf("/ncgets read %d characters: /"%s/"/n/

", buffer[1], p); printf("The returned pointer is %p, buffer[0] is at %p/n/

", p, &buffer);

return 0;

}

函數名: chdir

功 能: 改變工作目錄

用 法: int chdir(const char *path);

程式例:#include <stdio.h>

#include <stdlib.h>

#include <dir.h>char old_dir[MAXDIR];

char new_dir[MAXDIR];int main(void)

{

if (getcurdir(0, old_dir))

{ perror("getcurdir()");

exit(1);

}

printf("Current directory is: //%s/n", old_dir);

if (chdir("//"))

{ perror("chdir()");

exit(1);

}

if (getcurdir(0, new_dir))

{ perror("getcurdir()");

exit(1);

} printf("Current directory is now: //%s/n", new_dir); printf("/nChanging back to orignal directory: //%s/n/

", old_dir);

if (chdir(old_dir))

{ perror("chdir()");

exit(1);

}

return 0;

}

函數名: _chmod, chmod

功 能: 改變檔案的通路方式

用 法: int chmod(const char *filename, int permiss);

程式例:#include <sys/stat.h>

#include <stdio.h>

#include <io.h>void make_read_only(char *filename);int main(void)

{ make_read_only("NOTEXIST.FIL");

make_read_only("MYFILE.FIL"); return 0;

}void make_read_only(char *filename)

{ int stat;

stat = chmod(filename, S_IREAD);

if (stat)

printf("Couldn't make %s read-only/n", filename);

else

printf("Made %s read-only/n", filename);

}

函數名: chsize

功 能: 改變檔案大小

用 法: int chsize(int handle, long size);

程式例:#include <string.h>

#include <fcntl.h>

#include <io.h>int main(void)

{

int handle;

char buf[11] = "0123456789";

handle = open("DUMMY.FIL", O_CREAT);

write(handle, buf, strlen(buf));

chsize(handle, 5);

close(handle);

return 0;}

函數名: circle

功 能: 在給定半徑以(x, y)為圓心畫圓

用 法: void far circle(int x, int y, int radius);

程式例:#include <graphics.h>

#include <stdlib.h>

#include <stdio.h>

#include <conio.h>int main(void)

{

int gdriver = DETECT, gmode, errorcode; int midx, midy;

int radius = 100;

initgraph(&gdriver, &gmode, "");

errorcode = graphresult(); if (errorcode != grOk)

{

printf("Graphics error: %s/n/

", grapherrormsg(errorcode));

printf("Press any key to halt:"); getch();

exit(1);

}

midx = getmaxx() / 2;

midy = getmaxy() / 2;

setcolor(getmaxcolor());

circle(midx, midy, radius);

getch();

closegraph();

return 0;

}

函數名: cleardevice

功 能: 清除圖形螢幕

用 法: void far cleardevice(void);

程式例:#include <graphics.h>

#include <stdlib.h>

#include <stdio.h>

#include <conio.h>int main(void)

{

int gdriver = DETECT, gmode, errorcode; int midx, midy;

initgraph(&gdriver, &gmode, "");

errorcode = graphresult(); if (errorcode != grOk)

{

printf("Graphics error: %s/n/

", grapherrormsg(errorcode));

printf("Press any key to halt:");

getch(); exit(1);

}

midx = getmaxx() / 2;

midy = getmaxy() / 2;

setcolor(getmaxcolor());

settextjustify(CENTER_TEXT, CENTER_TEXT);

outtextxy(midx,midy,"press any key to clear the screen:");

getch();

cleardevice();

outtextxy(midx, midy, "press any key to quit:");

getch();

closegraph();

return 0;

}

函數名: clearerr

功 能: 複位錯誤标志

用 法:void clearerr(FILE *stream);

程式例:#include <stdio.h>int main(void)

{

FILE *fp;

char ch;

fp = fopen("DUMMY.FIL", "w");

ch = fgetc(fp);

printf("%c/n",ch); if (ferror(fp))

{

printf("Error reading from DUMMY.FIL/n");

clearerr(fp);

} fclose(fp);

return 0;

}

函數名: clearviewport

功 能: 清除圖形視區

用 法: void far clearviewport(void);

程式例:#include <graphics.h>

#include <stdlib.h>

#include <stdio.h>

#include <conio.h>#define CLIP_ON 1 int main(void)

{

int gdriver = DETECT, gmode, errorcode;

int ht;

initgraph(&gdriver, &gmode, "");

errorcode = graphresult(); if (errorcode != grOk)

{

printf("Graphics error: %s/n/

", grapherrormsg(errorcode)); printf("Press any key to halt:");

getch();

exit(1);

} setcolor(getmaxcolor());

ht = textheight("W");

outtextxy(0, 0, "* <-- (0, 0) in default viewport");

setviewport(50, 50, getmaxx()-50, getmaxy()-50, CLIP_ON);

outtextxy(0, 0, "* <-- (0, 0) in smaller viewport");

outtextxy(0, 2*ht, "Press any key to clear viewport:");

getch();

clearviewport();

outtextxy(0, 0, "Press any key to quit:"); getch();

closegraph();

return 0;

}

函數名: _close, close

功 能: 關閉檔案句柄

用 法: int close(int handle);

程式例:#include <string.h>

#include <stdio.h>

#include <fcntl.h>

#include <io.h>main()

{

int handle;

char buf[11] = "0123456789";

handle = open("NEW.FIL", O_CREAT);

if (handle > -1)

{

write(handle, buf, strlen(buf));

close(handle);

}

else

{

printf("Error opening file/n");

} return 0;

}

函數名: clock

功 能: 确定處理器時間

用 法: clock_t clock(void);

程式例:#include <time.h>

#include <stdio.h>

#include <dos.h>int main(void)

{

clock_t start, end;

start = clock();

delay(2000); end = clock();

printf("The time was: %f/n", (end - start) / CLK_TCK); return 0;

}

函數名: closegraph

功 能: 關閉圖形系統

用 法: void far closegraph(void);

程式例:#include <graphics.h>

#include <stdlib.h>

#include <stdio.h>

#include <conio.h>int main(void)

{

int gdriver = DETECT, gmode, errorcode; int x, y;

initgraph(&gdriver, &gmode, "");

errorcode = graphresult(); if (errorcode != grOk)

{

printf("Graphics error: %s/n/

", grapherrormsg(errorcode)); printf("Press any key to halt:");

getch();

exit(1);

}

x = getmaxx() / 2;

y = getmaxy() / 2;

settextjustify(CENTER_TEXT, CENTER_TEXT);

outtextxy(x, y, "Press a key to close the graphics /

system:");

getch();

closegraph(); printf("We're now back in text mode./n");

printf("Press any key to halt:");

getch();

return 0;

}

函數名: clreol

功 能: 在文本視窗中清除字元到行末

用 法: void clreol(void);

程式例:#include <conio.h>int main(void)

{

clrscr();

cprintf("The function CLREOL clears all characters from/

the/r/n");

cprintf("cursor position to the end of the line within/

the/r/n"); cprintf("current text window, without moving the cursor./

/r/n");

cprintf("Press any key to continue . . .");

gotoxy(14, 4);

getch();

clreol();

getch();

return 0;

}

函數名: clrscr

功 能: 清除文本模式視窗

用 法: void clrscr(void);

程式例:

#include <conio.h>int main(void)

{

int i;

clrscr();

for (i = 0; i < 20; i++)

cprintf("%d/r/n", i);

cprintf("/r/nPress any key to clear screen");

getch(); clrscr();

cprintf("The screen has been cleared!");

getch();

return 0;

}

函數名: coreleft

功 能: 傳回未使用記憶體的大小

用 法: unsigned coreleft(void);

程式例:

#include <stdio.h>

#include <alloc.h>int main(void)

{

printf("The difference between the highest allocated /

block and/n");

printf("the top of the heap is: %lu bytes/n/

", (unsigned long) coreleft());

return 0;

}

函數名: cos

功 能: 餘弦函數

用 法: double cos(double x);

程式例:#include <stdio.h>

#include <math.h>int main(void)

{

double result;

double x = 0.5; result = cos(x); printf("The cosine of %lf is %lf/n", x, result);

return 0;

}

函數名: cosh

功 能: 雙曲餘弦函數

用 法: dluble cosh(double x);

程式例:#include <stdio.h>

#include <math.h>int main(void)

{

double result;

double x = 0.5; result = cosh(x); printf("The hyperboic cosine of %lf is %lf/n",x,result);

return 0;

}

函數名: country

功 能: 傳回與國家有關的資訊

用 法: struct COUNTRY *country( int countrycode,

struct country *country);

程式例:#include <dos.h>

#include <stdio.h>#define USA 0int main(void)

{

struct COUNTRY country_info; country(USA, &country_info);

printf("The currency symbol for the USA is: %s/n",

country_info.co_curr);

return 0;

}

函數名: cprintf

功 能: 送格式化輸出至螢幕

用 法: int cprintf(const char *format[, argument, ...]);

程式例:#include <conio.h>int main(void)

{

clrscr();

window(10, 10, 80, 25);

cprintf("Hello world/r/n");

getch();

return 0;

}

函數名: cputs

功 能: 寫字元到螢幕

用 法: void cputs(const char *string);

程式例:#include <conio.h>int main(void)

{

clrscr();

window(10, 10, 80, 25);

cputs("This is within the window/r/n");

getch();

return 0;

}

函數名: _creat, creat

功 能: 建立一個新檔案或重寫一個已存在的檔案

用 法: int creat (const char *filename, int permiss);

程式例:#include <sys/stat.h>

#include <string.h>

#include <fcntl.h>

#include <io.h>int main(void)

{

int handle;

char buf[11] = "0123456789";

_fmode = O_BINARY;

handle = creat("DUMMY.FIL", S_IREAD | S_IWRITE);

write(handle, buf, strlen(buf));

close(handle);

return 0;

}

函數名: creatnew

功 能: 建立一個新檔案

用 法: int creatnew(const char *filename, int attrib);

程式例:#include <string.h>

#include <stdio.h>

#include <errno.h>

#include <dos.h>

#include <io.h>int main(void)

{

int handle; char buf[11] = "0123456789";

handle = creatnew("DUMMY.FIL", 0); if (handle == -1)

printf("DUMMY.FIL already exists./n");

else

{

printf("DUMMY.FIL successfully created./n");

write(handle, buf, strlen(buf));

close(handle);

} return 0;

}

函數名: creattemp

功 能: 建立一個新檔案或重寫一個已存在的檔案

用 法: int creattemp(const char *filename, int attrib);

程式例:#include <string.h>

#include <stdio.h>

#include <io.h>int main(void)

{

int handle;

char pathname[128];

strcpy(pathname, "//");

handle = creattemp(pathname, 0);

printf("%s was the unique file created./n", pathname);

close(handle);

return 0;

}

函數名: cscanf

功 能: 從控制台執行格式化輸入

用 法: int cscanf(char *format[,argument, ...]);

程式例:#include <conio.h>int main(void)

{

char string[80];

clrscr();

cprintf("Enter a string with no spaces:");

cscanf("%s", string);

cprintf("/r/nThe string entered is: %s", string);

return 0;

}

函數名: ctime

功 能: 把日期和時間轉換為字元串

用 法: char *ctime(const time_t *time);

程式例:#include <stdio.h>

#include <time.h>int main(void)

{

time_t t; time(&t);

printf("Today's date and time: %s/n", ctime(&t)); return 0;

}

函數名: ctrlbrk

功 能: 設定Ctrl-Break處理程式

用 法: void ctrlbrk(*fptr)(void);

程式例:#include <stdio.h>

#include <dos.h>#define ABORT 0int c_break(void)

{

printf("Control-Break pressed. Program aborting .../n");

return (ABORT);}

int main(void)

{

ctrlbrk(c_break);

for(;;)

{ printf("Looping... Press <Ctrl-Break> to quit:/n");

}

return 0;

}字母D開頭函數

函數名: delay

功 能: 将程式的執行暫停一段時間(毫秒)

用 法: void delay(unsigned milliseconds);

程式例:

#include <dos.h>int main(void)

{

sound(440);

delay(500);

nosound();

return 0;

}

函數名: delline

功 能: 在文本視窗中删去一行

用 法: void delline(void);

程式例:#include <conio.h>int main(void)

{

clrscr();

cprintf("The function DELLINE deletes /

the line containing the/r/n");

cprintf("cursor and moves all lines /

below it one line up./r/n"); cprintf("DELLINE operates within the /

currently active text/r/n");

cprintf("window. Press any key to /

continue . . .");

gotoxy(1,2);

getch();

delline();

getch(); return 0;

}

函數名: detectgraph

功 能: 通過檢測硬體确定圖形驅動程式和模式

用 法: void far detectgraph( int far *graphdriver,

int far *graphmode);

程式例:#include <graphics.h>

#include <stdlib.h>

#include <stdio.h>

#include <conio.h>

char *dname[] = { "requests detection",

"a CGA", "an MCGA",

"an EGA",

"a 64K EGA",

"a monochrome EGA",

"an IBM 8514",

"a Hercules monochrome",

"an AT&T 6300 PC",

"a VGA",

"an IBM 3270 PC"

};int main(void)

{

int gdriver, gmode, errorcode;

detectgraph(&gdriver, &gmode);

errorcode = graphresult(); if (errorcode != grOk)

{

printf("Graphics error: %s/n",

grapherrormsg(errorcode));

printf("Press any key to halt:"); getch();

exit(1);

}

clrscr();

printf("You have %s video display /

card./n", dname[gdriver]);

printf("Press any key to halt:");

getch();

return 0;

}

函數名: difftime

功 能: 計算兩個時刻之間的時間差

用 法: double difftime(time_t time2, time_t time1);

程式例:#include <time.h>

#include <stdio.h>

#include <dos.h>

#include <conio.h>int main(void)

{

time_t first, second;

clrscr();

first = time(NULL); delay(2000);

second = time(NULL);

printf("The difference is: %f /

seconds/n",difftime(second,first));

getch();

return 0;

}

函數名: disable

功 能: 屏蔽中斷

用 法: void disable(void);

程式例:#include <stdio.h>

#include <dos.h>

#include <conio.h>#define INTR 0X1C void interrupt ( *oldhandler)(void);int count=0;void interrupt handler(void)

{

disable();

count++;

enable();

oldhandler();

}int main(void)

{

oldhandler = getvect(INTR);

setvect(INTR, handler);

while (count < 20)

printf("count is %d/n",count);

setvect(INTR, oldhandler); return 0;

}

函數名: div

功 能: 将兩個整數相除, 傳回商和餘數

用 法: div_t (int number, int denom);

程式例:

#include <stdlib.h>

#include <stdio.h>

div_t x;int main(void)

{

x = div(10,3);

printf("10 div 3 = %d remainder %d/n", x.quot, x.rem);

return 0;

}

函數名: dosexterr

功 能: 擷取擴充DOS錯誤資訊

用 法: int dosexterr(struct DOSERR *dblkp);

程式例:#include <stdio.h>

#include <dos.h>int main(void)

{

FILE *fp;

struct DOSERROR info; fp = fopen("perror.dat","r"); if (!fp) perror("Unable to open file for

reading");

dosexterr(&info); printf("Extended DOS error /

information:/n");

printf(" Extended error: /

%d/n",info.exterror);

printf(" Class: /

%x/n",info.class);

printf(" Action: /

%x/n",info.action);

printf(" Error Locus: /

%x/n",info.locus); return 0;

}

函數名: dostounix

功 能: 轉換日期和時間為UNIX時間格式

用 法: long dostounix( struct date *dateptr,

struct time *timeptr );

程式例: #include <time.h>

#include <stddef.h>

#include <dos.h>

#include <stdio.h> 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 <graphics.h>

#include <stdlib.h>

#include <stdio.h>

#include <conio.h>int main(void)

{

int gdriver = DETECT, gmode, errorcode;

int maxx, maxy;

int poly[10];

initgraph(&gdriver, &gmode, "");

errorcode = graphresult();

if (errorcode != grOk)

{ printf("Graphics error: %s/n",

grapherrormsg(errorcode));

printf("Press any key to halt:");

getch();

exit(1);

}

maxx = getmaxx();

maxy = getmaxy(); poly[0] = 20;

poly[1] = maxy / 2; poly[2] = maxx - 20;

poly[3] = 20; poly[4] = maxx - 50;

poly[5] = maxy - 20; poly[6] = maxx / 2;

poly[7] = maxy / 2;

poly[8] = poly[0];

poly[9] = poly[1];

drawpoly(5, poly);

getch();

closegraph();

return 0;

}

函數名: dup

功 能: 複制一個檔案句柄

用 法: int dup(int handle);

程式例:#include <string.h>

#include <stdio.h>

#include <conio.h>

#include <io.h>void flush(FILE *stream);int main(void)

{ FILE *fp;

char msg[] = "This is a test";

fp = fopen("DUMMY.FIL", "w");

fwrite(msg, strlen(msg), 1, fp);

clrscr();

printf("Press any key to flush /

DUMMY.FIL:");

getch();

flush(fp); printf("/nFile was flushed, Press any /

key to quit:");

getch();

return 0;

}void flush(FILE *stream)

{

int duphandle;

fflush(stream);

duphandle = dup(fileno(stream));

close(duphandle);

}

函數名: dup2

功 能: 複制檔案句柄

用 法: int dup2(int oldhandle, int newhandle);

程式例:#include <sys/stat.h>

#include <string.h>

#include <fcntl.h>

#include <io.h>int main(void)

{

#define STDOUT 1

int nul, oldstdout;

char msg[] = "This is a test";

nul = open("DUMMY.FIL", O_CREAT | O_RDWR,

S_IREAD | S_IWRITE);

oldstdout = dup(STDOUT);

dup2(nul, STDOUT);

close(nul);

write(STDOUT, msg, strlen(msg));

dup2(oldstdout, STDOUT);

close(oldstdout);

return 0;

}字母E開頭函數

函數名: ecvt

功 能: 把一個浮點數轉換為字元串

用 法: char ecvt( double value, int ndigit, int *decpt,

int *sign );

程式例:#include <stdlib.h>

#include <stdio.h>

#include <conio.h>int main(void)

{

char *string;

double value; int dec, sign;

int ndig = 10; clrscr();

value = 9.876;

string = ecvt(value, ndig, &dec, &sign);

printf("string = %s dec = %d /

sign = %d/n", string, dec, sign);

value = -123.45;

ndig= 15;

string = ecvt(value,ndig,&dec,&sign);

printf("string = %s dec = %d sign = %d/n",

string, dec, sign); value = 0.6789e5;

ndig = 5;

string = ecvt(value,ndig,&dec,&sign);

printf("string = %s dec = %d/

sign = %d/n", string, dec, sign); return 0;

}

函數名: ellipse

功 能: 畫一橢圓

用 法: void far ellipse( int x, int y, int stangle,

int endangle, int xradius,

int yradius);

程式例:#include <graphics.h>

#include <stdlib.h>

#include <stdio.h>

#include <conio.h>int main(void)

{

int gdriver = DETECT, gmode, errorcode;

int midx, midy;

int stangle = 0, endangle = 360;

int xradius = 100, yradius = 50;

initgraph(&gdriver, &gmode, "");

errorcode = graphresult();

if (errorcode != grOk)

{ printf("Graphics error: %s/n",

grapherrormsg(errorcode));

printf("Press any key to halt:");

getch();

exit(1);

}

midx = getmaxx() / 2;

midy = getmaxy() / 2;

setcolor(getmaxcolor());

ellipse(midx, midy, stangle, endangle,

xradius, yradius);

getch();

closegraph();

return 0;

}

函數名: enable

功 能: 開放硬體中斷

用 法: void enable(void);

程式例:#include <stdio.h>

#include <dos.h>

#include <conio.h>

#define INTR 0X1Cvoid interrupt ( *oldhandler)(void);int count=0;void interrupt handler(void)

{

disable();

count++;

enable();

oldhandler();

}int main(void)

{

oldhandler = getvect(INTR);

setvect(INTR, handler);

while (count < 20)

printf("count is %d/n",count);

setvect(INTR, oldhandler); return 0;

}

函數名: eof

功 能: 檢測檔案結束

用 法: int eof(int *handle);

程式例:#include <sys/stat.h>

#include <string.h>

#include <stdio.h>

#include <fcntl.h>

#include <io.h>int main(void)

{

int handle; char msg[] = "This is a test";

char ch;

handle = open("DUMMY.FIL",

O_CREAT | O_RDWR,

S_IREAD | S_IWRITE);

write(handle, msg, strlen(msg));

lseek(handle, 0L, SEEK_SET);

do

{ read(handle, &ch, 1);

printf("%c", ch);

} while (!eof(handle)); close(handle);

return 0;

}

函數名: exec...

功 能: 裝入并運作其它程式的函數

用 法: int execl( char *pathname, char *arg0, arg1, ...,

argn, NULL );

int execle( char *pathname, char *arg0, arg1, ...,

argn, NULL, char *envp[] );

int execlp( char *pathname, char *arg0, arg1, ..,

NULL );

int execple( char *pathname, char *arg0, arg1, ...,

NULL, char *envp[] );

int execv( char *pathname, char *argv[] );

int execve( char *pathname, char *argv[],

char *envp[] );

int execvp( char *pathname, char *argv[] ); int execvpe( char *pathname, char *argv[],

char *envp[] );

程式例:

#include <process.h>

#include <stdio.h>

#include <errno.h>

void main(int argc, char *argv[])

{

int i; printf("Command line arguments:/n"); for (i=0; i<argc; i++)

printf("[%2d] : %s/n", i, argv[i]);

printf("About to exec child with arg1 arg2 .../n");

execv("CHILD.EXE", argv);

perror("exec error");

exit(1);

}

函數名: exit

功 能: 終止程式

用 法: void exit(int status);

程式例:#include <stdlib.h>

#include <conio.h>

#include <stdio.h>int main(void)

{

int status; printf("Enter either 1 or 2/n"); status = getch();

exit(status - '0');

return 0;

}

函數名: exp

功 能: 指數函數

用 法: double exp(double x);

程式例:#include <stdio.h>

#include <math.h>int main(void)

{

double result;

double x = 4.0; result = exp(x); printf("'e' raised to the power /

of %lf (e ^ %lf) = %lf/n",

x, x, result); return 0;

}字母F開頭函數函數名: fabs

功 能: 傳回浮點數的絕對值

用 法: double fabs(double x);

程式例:#include <stdio.h>

#include <math.h>

int main(void)

{

float number = -1234.0;

printf("number: %f absolute value: %f/n",

number, fabs(number));

return 0;

}

函數名: farcalloc

功 能: 從遠堆棧中申請空間

用 法: void far *farcalloc( unsigned long units,

unsigned ling unitsz );

程式例:

#include <stdio.h>

#include <alloc.h>

#include <string.h>

#include <dos.h>int main(void)

{

char far *fptr;

char *str = "Hello";

fptr = farcalloc(10, sizeof(char));

movedata(FP_SEG(str), FP_OFF(str),

FP_SEG(fptr), FP_OFF(fptr),

strlen(str));

printf("Far string is: %Fs/n", fptr);

farfree(fptr); return 0;

}

函數名: farcoreleft

功 能: 傳回遠堆中未作用存儲區大小

用 法: long farcoreleft(void);

程式例:#include <stdio.h>

#include <alloc.h>int main(void)

{

printf("The difference between the/

highest allocated block in the/

far/n"); printf("heap and the top of the far heap/

is: %lu bytes/n", farcoreleft()); return 0;

}

函數名: farfree

功 能: 從遠堆中釋放一塊

用 法: void farfree(void);

程式例:#include <stdio.h>

#include <alloc.h>

#include <string.h>

#include <dos.h>int main(void)

{

char far *fptr;

char *str = "Hello";

fptr = farcalloc(10, sizeof(char));

movedata(FP_SEG(str), FP_OFF(str),

FP_SEG(fptr), FP_OFF(fptr),

strlen(str));

printf("Far string is: %Fs/n", fptr);

farfree(fptr); return 0;

}

函數名: farmalloc

功 能: 從遠堆中配置設定存儲塊

用 法: void far *farmalloc(unsigned long size);

程式例:#include <stdio.h>

#include <alloc.h>

#include <string.h>

#include <dos.h>int main(void)

{

char far *fptr;

char *str = "Hello";

fptr = farmalloc(10);

movedata(FP_SEG(str), FP_OFF(str),

FP_SEG(fptr), FP_OFF(fptr),

strlen(str));

printf("Far string is: %Fs/n", fptr);

farfree(fptr); return 0;

}

函數名: farrealloc

功 能: 調整遠堆中的配置設定塊

用 法: void far *farrealloc( void far *block,

unsigned long newsize );

程式例:#include <stdio.h>

#include <alloc.h>int main(void)

{

char far *fptr; fptr = farmalloc(10); printf("First address: %Fp/n", fptr);

fptr = farrealloc(fptr,20);

printf("New address : %Fp/n", fptr);

farfree(fptr);

return 0;

}

函數名: fclose

功 能: 關閉一個流

用 法: int fclose(FILE *stream);

程式例:#include <string.h>

#include <stdio.h>int main(void)

{

FILE *fp;

char buf[11] = "0123456789"; fp = fopen("DUMMY.FIL", "w");

fwrite(&buf, strlen(buf), 1, fp);

fclose(fp);

return 0;

}

函數名: fcloseall

功 能: 關閉打開流

用 法: int fcloseall(void);

程式例:#include <stdio.h>int main(void)

{

int streams_closed;

fopen("DUMMY.ONE", "w");

fopen("DUMMY.TWO", "w");

streams_closed = fcloseall(); if (streams_closed == EOF)

perror("Error");

else

printf("%d streams were closed./n", streams_closed); return 0;

}

函數名: fcvt

功 能: 把一個浮點數轉換為字元串

用 法: char *fcvt( double value, int ndigit, int *decpt,

int *sign );

程式例:#include <stdlib.h>

#include <stdio.h>

#include <conio.h>int main(void)

{

char *string;

double value; int dec, sign;

int ndig = 10; clrscr();

value = 9.876;

string = ecvt(value, ndig, &dec, &sign);

printf("string = %s dec = %d /

sign = %d/n", string, dec, sign);

value = -123.45;

ndig= 15;

string = ecvt(value,ndig,&dec,&sign);

printf("string = %s dec = %d sign = %d/n",

string, dec, sign); value = 0.6789e5;

ndig = 5;

string = ecvt(value,ndig,&dec,&sign);

printf("string = %s dec = %d/

sign = %d/n", string, dec, sign);

return 0;

}

函數名: fdopen

功 能: 把流與一個檔案句柄相接

用 法: FILE *fdopen(int handle, char *type);

程式例:#include <sys/stat.h>

#include <stdio.h>

#include <fcntl.h>

#include <io.h>int main(void)

{

int handle;

FILE *stream;

handle = open("DUMMY.FIL", O_CREAT,

S_IREAD | S_IWRITE);

stream = fdopen(handle, "w"); if (stream == NULL)

printf("fdopen failed/n");

else

{

fprintf(stream, "Hello world/n");

fclose(stream);

} return 0;

}

函數名: feof

功 能: 檢測流上的檔案結束符

用 法: int feof(FILE *stream);

程式例:#include <stdio.h>int main(void)

{

FILE *stream;

stream = fopen("DUMMY.FIL", "r");

fgetc(stream);

if (feof(stream))

printf("We have reached end-of-file/n");

fclose(stream);

return 0;

}

函數名: ferror

功 能: 檢測流上的錯誤

用 法: int ferror(FILE *stream);

程式例:#include <stdio.h>int main(void)

{

FILE *stream;

stream = fopen("DUMMY.FIL", "w");

(void) getc(stream); if (ferror(stream))

{

printf("Error reading from DUMMY.FIL/n");

clearerr(stream);

} fclose(stream);

return 0;

}

函數名: fflush

功 能: 清除一個流

用 法: int fflush(FILE *stream);

程式例:#include <string.h>

#include <stdio.h>

#include <conio.h>

#include <io.h>void flush(FILE *stream);int main(void)

{ FILE *stream;

char msg[] = "This is a test";

stream = fopen("DUMMY.FIL", "w");

fwrite(msg, strlen(msg), 1, stream); clrscr();

printf("Press any key to flush/

DUMMY.FIL:");

getch();

flush(stream); printf("/nFile was flushed, Press any key/

to quit:");

getch();

return 0;

}void flush(FILE *stream)

{

int duphandle;

fflush(stream);

duphandle = dup(fileno(stream));

close(duphandle);

}

函數名: fgetc

功 能: 從流中讀取字元

用 法: int fgetc(FILE *stream);

程式例:#include <string.h>

#include <stdio.h>

#include <conio.h>int main(void)

{

FILE *stream;

char string[] = "This is a test";

char ch;

stream = fopen("DUMMY.FIL", "w+");

fwrite(string, strlen(string), 1, stream);

fseek(stream, 0, SEEK_SET);

do

{

ch = fgetc(stream);

putch(ch);

} while (ch != EOF); fclose(stream);

return 0;

}

函數名: fgetchar

功 能: 從流中讀取字元

用 法: int fgetchar(void);

程式例:#include <stdio.h>int main(void)

{

char ch;

printf("Enter a character followed by /

<Enter>: ");

ch = fgetchar();

printf("The character read is: '%c'/n",

ch);

return 0;

}

函數名: fgetpos

功 能: 取得目前檔案的句柄

用 法: int fgetpos(FILE *stream);

程式例:#include <string.h>

#include <stdio.h>int main(void)

{

FILE *stream;

char string[] = "This is a test";

fpos_t filepos;

stream = fopen("DUMMY.FIL", "w+");

fwrite(string, strlen(string), 1, stream);

fgetpos(stream, &filepos);

printf("The file pointer is at byte/

%ld/n", filepos); fclose(stream);

return 0;

}

函數名: fgets

功 能: 從流中讀取一字元串

用 法: char *fgets(char *string, int n, FILE *stream);

程式例:#include <string.h>

#include <stdio.h>int main(void)

{

FILE *stream;

char string[] = "This is a test";

char msg[20];

stream = fopen("DUMMY.FIL", "w+");

fwrite(string, strlen(string), 1, stream);

fseek(stream, 0, SEEK_SET);

fgets(msg, strlen(string)+1, stream);

printf("%s", msg); fclose(stream);

return 0;

}

函數名: filelength

功 能: 取檔案長度位元組數

用 法: long filelength(int handle);

程式例:#include <string.h>

#include <stdio.h>

#include <fcntl.h>

#include <io.h>int main(void)

{

int handle;

char buf[11] = "0123456789";

handle = open("DUMMY.FIL", O_CREAT);

write(handle, buf, strlen(buf));

printf("file length in bytes: %ld/n",

filelength(handle));

close(handle);

return 0;

}

函數名: fillellipse

功 能: 畫出并填充一橢圓

用 法: void far fillellipse( int x, int y, int xradius,

int yradius );

程式例:#include <graphics.h>

#include <conio.h>int main(void)

{

int gdriver = DETECT, gmode;

int xcenter, ycenter, i;

initgraph(&gdriver,&gmode,"");

xcenter = getmaxx() / 2;

ycenter = getmaxy() / 2; for (i=0; i<13; i++)

{

setfillstyle(i,WHITE);

fillellipse(xcenter,ycenter,100,50);

getch();

}

closegraph();

return 0;

}

函數名: fillpoly

功 能: 畫并填充一個多邊形

用 法: void far fillpoly( int numpoints,

int far *polypoints );

程式例:#include <graphics.h>

#include <stdlib.h>

#include <stdio.h>

#include <conio.h>int main(void)

{

int gdriver = DETECT, gmode, errorcode;

int i, maxx, maxy;

int poly[8];

initgraph(&gdriver, &gmode, "");

errorcode = graphresult();

if (errorcode != grOk)

{

printf("Graphics error: %s/n",

grapherrormsg(errorcode));

printf("Press any key to halt:");

getch();

exit(1);

}

maxx = getmaxx();

maxy = getmaxy(); poly[0] = 20;

poly[1] = maxy / 2;

poly[2] = maxx - 20;

poly[3] = 20; poly[4] = maxx - 50;

poly[5] = maxy - 20;

poly[6] = maxx / 2;

poly[7] = maxy / 2;

for (i=EMPTY_FILL; i<USER_FILL; i++)

{

setfillstyle(i, getmaxcolor());

fillpoly(4, poly);

getch();

}

closegraph();

return 0;

}

函數名: findfirst

功 能: 搜尋磁盤目錄; 取得下一個比對的findfirst模式的檔案

用 法: int findfirst( char *pathname, struct ffblk *ffblk,

int attrib);

程式例:#include <stdio.h>

#include <dir.h>int main(void)

{

struct ffblk ffblk; int done;

printf("Directory listing of *.*/n");

done = findfirst("*.*",&ffblk,0);

while (!done)

{

printf(" %s/n", ffblk.ff_name);

done = findnext(&ffblk);

}

return 0;

}

函數名: findnext

功 能: 搜尋磁盤目錄; 取得下一個比對的findfirst模式的檔案

用 法: int findnext(struct ffblk *ffblk);

程式例:

#include <stdio.h>

#include <dir.h>int main(void)

{

struct ffblk ffblk;

int done;

printf("Directory listing of *.*/n"); done = findfirst("*.*",&ffblk,0);

while (!done)

{

printf(" %s/n", ffblk.ff_name);

done = findnext(&ffblk);

}

return 0;

}

函數名: floodfill

功 能: 填充一個有界區域

用 法: void far floodfill(int x, int y, int border);

程式例:#include <graphics.h>

#include <stdlib.h>

#include <stdio.h>

#include <conio.h>int main(void)

{

int gdriver = DETECT, gmode, errorcode; int maxx, maxy;

initgraph(&gdriver, &gmode, "");

errorcode = graphresult();

if (errorcode != grOk)

{

printf("Graphics error: %s/n",

grapherrormsg(errorcode));

printf("Press any key to halt:");

getch(); exit(1);

}

maxx = getmaxx();

maxy = getmaxy();

setcolor(getmaxcolor());

setfillstyle(SOLID_FILL, getmaxcolor());

rectangle(0, 0, maxx, maxy);

circle(maxx / 3, maxy /2, 50);

circle(maxx / 2, 20, 100);

circle(maxx-20, maxy-50, 75);

circle(20, maxy-20, 25);

getch();

floodfill(2, 2, getmaxcolor());

getch(); closegraph();

return 0;

}

函數名: floor

功 能: 向下舍入

用 法: double floor(double x);

程式例:#include <stdio.h>

#include <math.h>int main(void)

{

double number = 123.54;

double down, up; down = floor(number); up = ceil(number); printf("original number %10.2lf/n",

number);

printf("number rounded down %10.2lf/n",

down);

printf("number rounded up %10.2lf/n",

up); return 0;

}

函數名: flushall

功 能: 清除所有緩沖區

用 法: int flushall(void);

程式例:#include <stdio.h>int main(void)

{

FILE *stream;

stream = fopen("DUMMY.FIL", "w");

printf("%d streams were flushed./n",

flushall());

fclose(stream);

return 0;

}

函數名: fmod

功 能: 計算x對y的模, 即x/y的餘數

用 法: double fmod(double x, double y);

程式例:#include <stdio.h>

#include <math.h>int main(void)

{

double x = 5.0, y = 2.0;

double result; result = fmod(x,y); printf("The remainder of (%lf / %lf) is /

%lf/n", x, y, result);

return 0;

}

函數名: fnmerge

功 能: 建立新檔案名

用 法: void fnerge(char *path, char *drive, char *dir);

程式例:#include <string.h>

#include <stdio.h>

#include <dir.h>int main(void)

{

char s[MAXPATH];

char drive[MAXDRIVE];

char dir[MAXDIR]; char file[MAXFILE];

char ext[MAXEXT]; getcwd(s,MAXPATH);

strcat(s,"//");

fnsplit(s,drive,dir,file,ext);

strcpy(file,"DATA");

strcpy(ext,".TXT");

fnmerge(s,drive,dir,file,ext);

puts(s);

return 0;

}

函數名: fopen

功 能: 打開一個流

用 法: FILE *fopen(char *filename, char *type);

程式例:#include <stdlib.h>

#include <stdio.h>

#include <dir.h>int main(void)

{

char *s;

char drive[MAXDRIVE];

char dir[MAXDIR]; char file[MAXFILE];

char ext[MAXEXT];

int flags; s=getenv("COMSPEC");

flags=fnsplit(s,drive,dir,file,ext); printf("Command processor info:/n");

if(flags & DRIVE)

printf("/tdrive: %s/n",drive);

if(flags & DIRECTORY)

printf("/tdirectory: %s/n",dir); if(flags & FILENAME)

printf("/tfile: %s/n",file);

if(flags & EXTENSION)

printf("/textension: %s/n",ext); return 0;

}

函數名: fprintf

功 能: 傳送格式化輸出到一個流中

用 法: int fprintf( FILE *stream,

char *format[, argument,...] );

程式例:#include <stdio.h>int main(void)

{

FILE *in, *out; if ((in = fopen("//AUTOEXEC.BAT", "rt"))

== NULL)

{

fprintf(stderr, "Cannot open input /

file./n");

return 1;

}

if ((out = fopen("//AUTOEXEC.BAK", "wt"))

== NULL)

{ fprintf(stderr, "Cannot open output /

file./n");

return 1;

} while (!feof(in))

fputc(fgetc(in), out);

fclose(in);

fclose(out);

return 0;

}

函數名: FP_OFF

功 能: 擷取遠位址偏移量

用 法: unsigned FP_OFF(void far *farptr);

程式例:#include <dos.h>

#include <stdio.h>int main(void)

{

char *str = "fpoff.c";

printf("The offset of this file in memory/

is: %Fp/n", FP_OFF(str)); return 0;

}

函數名: FP_SEG

功 能: 擷取遠位址段值

用 法: unsigned FP_SEG(void far *farptr);

程式例:#include <dos.h>

#include <stdio.h>int main(void)

{

char *filename = "fpseg.c";

printf("The offset of this file in memory/

is: %Fp/n", FP_SEG(filename)); return(0);

}

函數名: fputc

功 能: 送一個字元到一個流中

用 法: int fputc(int ch, FILE *stream);

程式例:

#include <stdio.h>int main(void)

{

char msg[] = "Hello world";

int i = 0; while (msg[i])

{

fputc(msg[i], stdout); i++;

}

return 0;

}

函數名: fputchar

功 能: 送一個字元到标準輸出流(stdout)中

用 法: int fputchar(char ch);

程式例:#include <stdio.h>int main(void)

{

char msg[] = "This is a test";

int i = 0;

while (msg[i])

{

fputchar(msg[i]); i++;

}

return 0;

}

函數名: fputs

功 能: 送一個字元到一個流中

用 法: int fputs(char *string, FILE *stream);

程式例:#include <stdio.h>

int main(void)

{

fputs("Hello world/n", stdout);

return 0;

}

函數名: fread

功 能: 從一個流中讀資料

用 法: int fread( void *ptr, int size, int nitems,

FILE *stream );

程式例:#include <string.h>

#include <stdio.h>int main(void)

{

FILE *stream;

char msg[] = "this is a test";

char buf[20]; if ((stream = fopen("DUMMY.FIL", "w+"))

== NULL)

{

fprintf(stderr,

"Cannot open output file./n");

return 1;

}

fwrite(msg, strlen(msg)+1, 1, stream);

fseek(stream, SEEK_SET, 0);

fread(buf, strlen(msg)+1, 1, stream);

printf("%s/n", buf); fclose(stream);

return 0;

}

函數名: free

功 能: 釋放已配置設定的塊

用 法: void free(void *ptr);

程式例:#include <string.h>

#include <stdio.h>

#include <alloc.h>int main(void)

{

char *str;

str = malloc(10);

strcpy(str, "Hello");

printf("String is %s/n", str);

free(str); return 0;

}

函數名: freemem

功 能: 釋放先前配置設定的DOS記憶體塊

用 法: int freemem(unsigned seg);

程式例:#include <dos.h>

#include <alloc.h>

#include <stdio.h>int main(void)

{

unsigned int size, segp;

int stat; size = 64;

stat = allocmem(size, &segp);

if (stat < 0)

printf("Allocated memory at segment:/

%x/n", segp);

else

printf("Failed: maximum number of/

paragraphs available is %u/n",

stat);

freemem(segp); return 0;

}

函數名: freopen

功 能: 替換一個流

用 法: FILE *freopen( char *filename, char *type,

FILE *stream );

程式例:#include <stdio.h>int main(void)

{

if (freopen("OUTPUT.FIL", "w", stdout)

== NULL) fprintf(stderr, "error redirecting/

stdout/n");

printf("This will go into a file.");

fclose(stdout); return 0;

}

函數名: frexp

功 能: 把一個雙精度數分解為尾數的指數

用 法: double frexp(double value, int *eptr);

程式例:#include <math.h>

#include <stdio.h>int main(void)

{

double mantissa, number;

int exponent;

number = 8.0;

mantissa = frexp(number, &exponent); printf("The number %lf is ", number);

printf("%lf times two to the ", mantissa);

printf("power of %d/n", exponent);

return 0;

}

函數名: fscanf

功 能: 從一個流中執行格式化輸入

用 法: int fscanf( FILE *stream,

char *format[,argument...] );

程式例:#include <stdlib.h>

#include <stdio.h>int main(void)

{

int i; printf("Input an integer: ");

if (fscanf(stdin, "%d", &i))

printf("The integer read was: %i/n",

i);

else

{

fprintf(stderr, "Error reading an /

integer from stdin./n");

exit(1);

}

return 0;

}

函數名: fseek

功 能: 重定位流上的檔案指針

用 法: int fseek(FILE *stream,long offset,int fromwhere);

程式例:#include <stdio.h>long filesize(FILE *stream);int main(void)

{

FILE *stream;

stream = fopen("MYFILE.TXT", "w+");

fprintf(stream, "This is a test"); printf("Filesize of MYFILE.TXT is %ld bytes/n/

", filesize(stream));

fclose(stream);

return 0;

}long filesize(FILE *stream)

{

long curpos, length; curpos = ftell(stream);

fseek(stream, 0L, SEEK_END);

length = ftell(stream);

fseek(stream, curpos, SEEK_SET); return length;

}

函數名: fsetpos

功 能: 定位流上的檔案指針

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

程式例:#include <stdlib.h>

#include <stdio.h>void showpos(FILE *stream);int main(void)

{

FILE *stream;

fpos_t filepos;

stream = fopen("DUMMY.FIL", "w+");

fgetpos(stream, &filepos);

fprintf(stream, "This is a test");

showpos(stream);

if (fsetpos(stream, &filepos) == 0) showpos(stream);

else

{

fprintf(stderr, "Error setting file /

pointer./n");

exit(1);

}

fclose(stream);

return 0;

}void showpos(FILE *stream)

{

fpos_t pos;

fgetpos(stream, &pos);

printf("File position: %ld/n", pos);

}

函數名: fstat

功 能: 擷取打開檔案資訊

用 法: int fstat(char *handle, struct stat *buff);

程式例:#include <sys/stat.h>

#include <stdio.h>

#include <time.h>int main(void)

{

struct stat statbuf;

FILE *stream;

if ((stream = fopen("DUMMY.FIL", "w+"))

== NULL)

{

fprintf(stderr, "Cannot open output /

file./n");

return(1);

}

fprintf(stream, "This is a test");

fflush(stream);

fstat(fileno(stream), &statbuf);

fclose(stream);

if (statbuf.st_mode & S_IFCHR)

printf("Handle refers to a device./n");

if (statbuf.st_mode & S_IFREG)

printf("Handle refers to an ordinary /

file./n");

if (statbuf.st_mode & S_IREAD)

printf("User has read permission on /

file./n");

if (statbuf.st_mode & S_IWRITE)

printf("User has write permission on /

file./n"); printf("Drive letter of file: %c/n",

'A'+statbuf.st_dev);

printf("Size of file in bytes: %ld/n",

statbuf.st_size);

printf("Time file last opened: %s/n",

ctime(&statbuf.st_ctime));

return 0;

}

函數名: ftell

功 能: 傳回目前檔案指針

用 法: long ftell(FILE *stream);

程式例:#include <stdio.h>int main(void)

{

FILE *stream; stream = fopen("MYFILE.TXT", "w+");

fprintf(stream, "This is a test"); printf("The file pointer is at byte /

%ld/n", ftell(stream));

fclose(stream);

return 0;

}

函數名: fwrite

功 能: 寫内容到流中

用 法: int fwrite( void *ptr, int size, int nitems,

FILE *stream );

程式例:#include <stdio.h>struct mystruct

{

int i;

char ch;

};int main(void)

{

FILE *stream;

struct mystruct s; if ((stream = fopen("TEST.$$$", "wb")) == NULL)

{

fprintf(stderr, "Cannot open output file./n");

return 1;

}

s.i = 0;

s.ch = 'A'; fwrite(&s, sizeof(s), 1, stream);

fclose(stream);

return 0;

}字母G開頭函數函數名: gcvt

功 能: 把浮點數轉換成字元串

用 法: char *gcvt(double value, int ndigit, char *buf);

程式例:#include <stdlib.h>

#include <stdio.h>int main(void)

{

char str[25];

double num;

int sig = 5;

num = 9.876;

gcvt(num, sig, str);

printf("string = %s/n", str);

num = -123.4567;

gcvt(num, sig, str);

printf("string = %s/n", str);

num = 0.678e5;

gcvt(num, sig, str);

printf("string = %s/n", str); return(0);

}

函數名: getarccoords

功 能: 取得最後一次調用arc的坐标

用 法: void far getarccoords

( struct arccoordstype far *arccoords );

程式例:#include <graphics.h>

#include <stdlib.h>

#include <stdio.h>

#include <conio.h>int main(void)

{

int gdriver = DETECT, gmode, errorcode;

struct arccoordstype arcinfo;

int midx, midy;

int stangle = 45, endangle = 270;

char sstr[80], estr[80];

initgraph(&gdriver, &gmode, "");

errorcode = graphresult();

if (errorcode != grOk)

{

printf("Graphics error: %s/n",

grapherrormsg(errorcode));

printf("Press any key to halt:");

getch();

exit(1);

} midx = getmaxx() / 2;

midy = getmaxy() / 2;

setcolor(getmaxcolor());

arc(midx, midy, stangle, endangle, 100);

getarccoords(&arcinfo);

sprintf(sstr, "*- (%d, %d)",

arcinfo.xstart, arcinfo.ystart);

sprintf(estr, "*- (%d, %d)",

arcinfo.xend, arcinfo.yend);

outtextxy(arcinfo.xstart,

arcinfo.ystart, sstr);

outtextxy(arcinfo.xend,

arcinfo.yend, estr);

getch();

closegraph();

return 0;

}

函數名: getaspectratio

功 能: 傳回目前圖形模式的縱橫比

用 法: void far getaspectratio( int far *xasp,

int far *yasp );

程式例:#include <graphics.h>

#include <stdlib.h>

#include <stdio.h>

#include <conio.h>int main(void)

{

int gdriver = DETECT, gmode, errorcode;

int xasp, yasp, midx, midy;

initgraph(&gdriver, &gmode, "");

errorcode = graphresult();

if (errorcode != grOk)

{ printf("Graphics error: %s/n",

grapherrormsg(errorcode));

printf("Press any key to halt:");

getch();

exit(1);

} midx = getmaxx() / 2;

midy = getmaxy() / 2;

setcolor(getmaxcolor());

getaspectratio(&xasp, &yasp);

circle(midx, midy, 100);

getch();

cleardevice();

setaspectratio(xasp/2, yasp);

circle(midx, midy, 100);

getch();

cleardevice();

setaspectratio(xasp, yasp/2);

circle(midx, midy, 100);

getch();

closegraph();

return 0;

}

函數名: getbkcolor

功 能: 傳回目前背景顔色

用 法: int far getbkcolor(void);

程式例:#include <graphics.h>

#include <stdlib.h>

#include <string.h>

#include <stdio.h>

#include <conio.h>int main(void)

{

int gdriver = DETECT, gmode, errorcode;

int bkcolor, midx, midy;

char bkname[35];

initgraph(&gdriver, &gmode, "");

errorcode = graphresult();

if (errorcode != grOk)

{ printf("Graphics error: %s/n",

grapherrormsg(errorcode));

printf("Press any key to halt:");

getch();

exit(1);

} midx = getmaxx() / 2;

midy = getmaxy() / 2;

setcolor(getmaxcolor());

settextjustify(CENTER_TEXT, CENTER_TEXT);

bkcolor = getbkcolor();

itoa(bkcolor, bkname, 10);

strcat(bkname,"is the current background color.");

outtextxy(midx, midy, bkname);

getch();

closegraph();

return 0;

}

函數名: getc

功 能: 從流中取字元

用 法: int getc(FILE *stream);

程式例:#include <stdio.h>int main(void)

{

char ch; printf("Input a character:");

ch = getc(stdin);

printf("The character input was: '%c'/n",

ch);

return 0;

}

函數名: getcbrk

功 能: 擷取Control_break設定

用 法: int getcbrk(void);

程式例:#include <stdio.h>

#include <dos.h>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 <stdio.h>

#include <conio.h>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 <stdio.h>int main(void)

{

int c; while ((c = getchar()) != '/n')

printf("%c", c); return 0;

}

函數名: getche

功 能: 從控制台取字元(帶回顯)

用 法: int getche(void);

程式例:#include <stdio.h>

#include <conio.h>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 <graphics.h>

#include <stdlib.h>

#include <string.h>

#include <stdio.h>

#include <conio.h>int main(void)

{

int gdriver = DETECT, gmode, errorcode; int color, midx, midy;

char colname[35];

initgraph(&gdriver, &gmode, "");

errorcode = graphresult();

if (errorcode != grOk)

{

printf("Graphics error: %s/n",

grapherrormsg(errorcode)); printf("Press any key to halt:");

getch();

exit(1);

} midx = getmaxx() / 2;

midy = getmaxy() / 2;

setcolor(getmaxcolor());

settextjustify(CENTER_TEXT, CENTER_TEXT);

color = getcolor();

itoa(color, colname, 10);

strcat(colname,"is the current drawing color.");

outtextxy(midx, midy, colname);

getch();

closegraph();

return 0;

}

函數名: getcurdir

功 能: 取指定驅動器的目前目錄

用 法: int getcurdir(int drive, char *direc);

程式例:#include <dir.h>

#include <stdio.h>

#include <string.h>char *current_directory(char *path)

{

strcpy(path, "X://");

path[0] = 'A' + getdisk();

getcurdir(0, path+3);

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 <stdio.h>

#include <dir.h>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 <dos.h>

#include <stdio.h>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 <graphics.h>

#include <stdlib.h>

#include <stdio.h>

#include <conio.h>int main(void)

{

int gdriver = DETECT, gmode, errorcode;

int i;

struct palettetype far *pal=(void *) 0;

initgraph(&gdriver, &gmode, "");

errorcode = graphresult();

if (errorcode != grOk)

{

printf("Graphics error: %s/n",

grapherrormsg(errorcode));

printf("Press any key to halt:");

getch();

exit(1);

} setcolor(getmaxcolor());

pal = getdefaultpalette(); for (i=0; i<16; i++)

{

printf("colors[%d] = %d/n", i,

pal->colors[i]);

getch();

}

getch();

closegraph();

return 0;

}

函數名: getdfree

功 能: 取磁盤自由空間

用 法: void getdfree(int drive, struct dfree *dfreep);

程式例:#include <stdio.h>

#include <stdlib.h>

#include <dir.h>

#include <dos.h>int main(void)

{

struct dfree free;

long avail; int drive; drive = getdisk();

getdfree(drive+1, &free);

if (free.df_sclus == 0xFFFF)

{

printf("Error in getdfree() call/n");

exit(1);

} avail = (long) free.df_avail *

(long) free.df_bsec *

(long) free.df_sclus;

printf("Drive %c: has %ld bytes /

available/n", 'A' + drive, avail); return 0;

}

函數名: getdisk

功 能: 取目前磁盤驅動器号

用 法: int getdisk(void);

程式例:#include <stdio.h>

#include <dir.h>int main(void)

{

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

disk);

return 0;

}

函數名: getdrivername

功 能: 傳回指向包含目前圖形驅動程式名字的字元串指針

用 法: char *getdrivename(void);

程式例:#include <graphics.h>

#include <stdlib.h>

#include <stdio.h>

#include <conio.h>int main(void)

{

int gdriver = DETECT, gmode, errorcode;

char *drivername;

initgraph(&gdriver, &gmode, "");

errorcode = graphresult();

if (errorcode != grOk)

{

printf("Graphics error: %s/n",

grapherrormsg(errorcode));

printf("Press any key to halt:"); getch();

exit(1);

} setcolor(getmaxcolor());

drivername = getdrivername();

settextjustify(CENTER_TEXT, CENTER_TEXT);

outtextxy(getmaxx() / 2, getmaxy() / 2,

drivername);

getch();

closegraph();

return 0;

}

函數名: getdta

功 能: 取磁盤傳輸位址

用 法: char far *getdta(void);

程式例:#include <dos.h>

#include <stdio.h>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 <stdlib.h>

#include <stdio.h>int main(void)

{

char *s; s=getenv("COMSPEC");

printf("Command processor: %s/n",s);

return 0;

}

函數名: getfat, getfatd

功 能: 取檔案配置設定表資訊

用 法: void getfat(int drive, struct fatinfo *fatblkp);

程式例:#include <stdio.h>

#include <dos.h>int main(void)

{

struct fatinfo diskinfo;

int flag = 0; printf("Please insert disk in drive A/n");

getchar(); getfat(1, &diskinfo);

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 <graphics.h>

#include <stdlib.h>

#include <stdio.h>

#include <conio.h>int main(void)

{

int gdriver = DETECT, gmode, errorcode; int maxx, maxy;

char pattern[8] =

{ 0x00, 0x70, 0x20, 0x27, 0x25, 0x27, 0x04, 0x04 };

initgraph(&gdriver, &gmode, "");

errorcode = graphresult();

if (errorcode != grOk)

{

printf("Graphics error: %s/n/

", grapherrormsg(errorcode));

printf("Press any key to halt:"); getch();

exit(1);

} maxx = getmaxx();

maxy = getmaxy();

setcolor(getmaxcolor());

setfillpattern(pattern, getmaxcolor());

bar(0, 0, maxx, maxy);

getch();

getfillpattern(pattern);

pattern[4] -= 1;

pattern[5] -= 3;

pattern[6] += 3;

pattern[7] -= 4;

setfillpattern(pattern, getmaxcolor());

bar(0, 0, maxx, maxy);

getch();

closegraph();

return 0;

}

函數名: getfillsettings

功 能: 取得有關目前填充模式和填充顔色的資訊

用 法: void far getfillsettings

( struct fillsettingstype far *fillinfo );

程式例:#include <graphics.h>

#include <stdlib.h>

#include <stdio.h>

#include <conio.h>

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)

{

int gdriver = DETECT, gmode, errorcode;

struct fillsettingstype fillinfo;

int midx, midy;

char patstr[40], colstr[40];

initgraph(&gdriver, &gmode, "");

errorcode = graphresult(); if (errorcode != grOk)

{

printf("Graphics error: %s/n/

", grapherrormsg(errorcode));

printf("Press any key to halt:");

getch();

exit(1);

} midx = getmaxx() / 2;

midy = getmaxy() / 2;

getfillsettings(&fillinfo);

sprintf( patstr, "%s is the fill style.",

fname[fillinfo.pattern] );

sprintf(colstr, "%d is the fill color.", fillinfo.color);

settextjustify(CENTER_TEXT, CENTER_TEXT);

outtextxy(midx, midy, patstr);

outtextxy(midx, midy+2*textheight("W"), colstr);

getch();

closegraph();

return 0;

}

函數名: getftime

功 能: 取檔案日期和時間

用 法: int getftime(int handle, struct ftime *ftimep);

程式例:#include <stdio.h>

#include <io.h>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 <graphics.h>

#include <stdlib.h>

#include <stdio.h>

#include <conio.h>int main(void)

{

int gdriver = DETECT, gmode, errorcode; int midx, midy, mode;

char numname[80], modename[80];

initgraph(&gdriver, &gmode, "");

errorcode = graphresult();

if (errorcode != grOk)

{

printf("Graphics error: %s/n",

grapherrormsg(errorcode)); printf("Press any key to halt:");

getch();

exit(1);

} midx = getmaxx() / 2;

midy = getmaxy() / 2;

mode = getgraphmode();

sprintf(numname,

"%d is the current mode number.",

mode); sprintf(modename,

"%s is the current graphics mode",

getmodename(mode));

settextjustify(CENTER_TEXT, CENTER_TEXT);

outtextxy(midx, midy, numname);

outtextxy(midx, midy+2*textheight("W"),

modename);

getch();

closegraph();

return 0;

}

函數名: getimage

功 能: 将指定區域的一個位圖存到主存中

用 法: void far getimage( int left, int top, int right,

int bottom, void far *bitmap);

程式例:#include <graphics.h>

#include <stdlib.h>

#include <stdio.h>

#include <conio.h>

#include <alloc.h>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];

initgraph(&gdriver, &gmode, "");

errorcode = graphresult(); if (errorcode != grOk)

{

printf("Graphics error: %s/n",

grapherrormsg(errorcode)); printf("Press any key to halt:");

getch();

exit(1);

}

maxx = getmaxx();

maxy = getmaxy();

rectangle(0, 0, maxx, maxy);

line(0, 0, maxx, maxy);

line(0, maxy, maxx, 0); save_screen(ptr);

getch(); cleardevice();

restore_screen(ptr);

getch(); 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);

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 <graphics.h>

#include <stdlib.h>

#include <stdio.h>

#include <conio.h>

char *lname[] = { "SOLID_LINE",

"DOTTED_LINE", "CENTER_LINE",

"DASHED_LINE",

"USERBIT_LINE"

};int main(void)

{

int gdriver = DETECT, gmode, errorcode;

struct linesettingstype lineinfo;

int midx, midy;

char lstyle[80], lpattern[80], lwidth[80];

initgraph(&gdriver, &gmode, "");

errorcode = graphresult();

if (errorcode != grOk)

{

printf("Graphics error: %s/n",

grapherrormsg(errorcode));

printf("Press any key to halt:");

getch();

exit(1);

} midx = getmaxx() / 2;

midy = getmaxy() / 2;

getlinesettings(&lineinfo);

sprintf(lstyle, "%s is the line style.",

lname[lineinfo.linestyle]);

sprintf(lpattern,"0x%Xis the user-defined line pattern.",

lineinfo.upattern);

sprintf(lwidth, "%d is the line thickness.",

lineinfo.thickness);

settextjustify(CENTER_TEXT, CENTER_TEXT);

outtextxy(midx, midy, lstyle);

outtextxy(midx, midy+2*textheight("W"), lpattern);

outtextxy(midx, midy+4*textheight("W"), lwidth);

getch();

closegraph();

return 0;

}

函數名: getmaxcolor

功 能: 傳回可以傳給函數setcolor的最大顔色值

用 法: int far getmaxcolor(void);

程式例:#include <graphics.h>

#include <stdlib.h>

#include <stdio.h>

#include <conio.h>int main(void)

{

int gdriver = DETECT, gmode, errorcode; int midx, midy;

char colstr[80]; initgraph(&gdriver, &gmode, "");

errorcode = graphresult();

if (errorcode != grOk)

{

printf("Graphics error: %s/n",

grapherrormsg(errorcode));

printf("Press any key to halt:");

getch(); exit(1);

} midx = getmaxx() / 2;

midy = getmaxy() / 2;

sprintf( colstr, "This mode supports colors 0..%d",

getmaxcolor() );

settextjustify(CENTER_TEXT, CENTER_TEXT);

outtextxy(midx, midy, colstr);

getch();

closegraph();

return 0;

}

函數名: getmaxx

功 能: 傳回螢幕的最大x坐标

用 法: int far getmaxx(void);

程式例:#include <graphics.h>

#include <stdlib.h>

#include <stdio.h>

#include <conio.h>int main(void)

{

int gdriver = DETECT, gmode, errorcode; int midx, midy;

char xrange[80], yrange[80];

initgraph(&gdriver, &gmode, "");

errorcode = graphresult();

if (errorcode != grOk)

{

printf("Graphics error: %s/n",

grapherrormsg(errorcode));

printf("Press any key to halt:");

getch(); exit(1);

} midx = getmaxx() / 2;

midy = getmaxy() / 2;

sprintf(xrange, "X values range from 0..%d", getmaxx());

sprintf(yrange, "Y values range from 0..%d", getmaxy());

settextjustify(CENTER_TEXT, CENTER_TEXT);

outtextxy(midx, midy, xrange);

outtextxy(midx, midy+textheight("W"), yrange);

getch();

closegraph();

return 0;

}

函數名: getmaxy

功 能: 傳回螢幕的最大y坐标

用 法: int far getmaxy(void);

程式例:#include <graphics.h>

#include <stdlib.h>

#include <stdio.h>

#include <conio.h>int main(void)

{

int gdriver = DETECT, gmode, errorcode; int midx, midy;

char xrange[80], yrange[80];

initgraph(&gdriver, &gmode, "");

errorcode = graphresult();

if (errorcode != grOk)

{

printf("Graphics error: %s/n",

grapherrormsg(errorcode));

printf("Press any key to halt:");

getch(); exit(1);

} midx = getmaxx() / 2;

midy = getmaxy() / 2;

sprintf(xrange, "X values range from 0..%d", getmaxx());

sprintf(yrange, "Y values range from 0..%d", getmaxy());

settextjustify(CENTER_TEXT, CENTER_TEXT);

outtextxy(midx, midy, xrange);

outtextxy(midx, midy+textheight("W"), yrange);

getch();

closegraph();

return 0;

}

函數名: getmodename

功 能: 傳回含有指定圖形模式名的字元串指針

用 法: char *far getmodename(int mode_name);

程式例:#include <graphics.h>

#include <stdlib.h>

#include <stdio.h>

#include <conio.h>int main(void)

{

int gdriver = DETECT, gmode, errorcode; int midx, midy, mode;

char numname[80], modename[80];

initgraph(&gdriver, &gmode, "");

errorcode = graphresult();

if (errorcode != grOk)

{

printf("Graphics error: %s/n",

grapherrormsg(errorcode));

printf("Press any key to halt:");

getch(); exit(1);

} midx = getmaxx() / 2;

midy = getmaxy() / 2;

mode = getgraphmode();

sprintf(numname, "%d is the current mode number.", mode);

sprintf(modename, "%s is the current graphics mode.",

getmodename(mode));

settextjustify(CENTER_TEXT, CENTER_TEXT); outtextxy(midx, midy, numname);

outtextxy(midx, midy+2*textheight("W"), modename);

getch();

closegraph();

return 0;

}

函數名: getmoderange

功 能: 取給定圖形驅動程式的模式範圍

用 法: void far getmoderange( int graphdriver,

int far *lomode,

int far *himode );

程式例:#include <graphics.h>

#include <stdlib.h>

#include <stdio.h>

#include <conio.h>int main(void)

{

int gdriver = DETECT, gmode, errorcode;

int midx, midy;

int low, high;

char mrange[80];

initgraph(&gdriver, &gmode, "");

errorcode = graphresult();

if (errorcode != grOk)

{ printf("Graphics error: %s/n",

grapherrormsg(errorcode));

printf("Press any key to halt:");

getch();

exit(1);

} midx = getmaxx() / 2;

midy = getmaxy() / 2;

getmoderange(gdriver, &low, &high);

sprintf(mrange, "This driver supports modes %d..%d",

low, high);

settextjustify(CENTER_TEXT, CENTER_TEXT);

outtextxy(midx, midy, mrange);

getch();

closegraph();

return 0;

}

函數名: getpalette

功 能: 傳回有關目前調色闆的資訊

用 法: void far getpalette(struct palettetype far *palette);

程式例:#include <graphics.h>

#include <stdlib.h>

#include <stdio.h>

#include <conio.h>int main(void)

{

int gdriver = DETECT, gmode, errorcode; struct palettetype pal;

char psize[80], pval[20];

int i, ht;

int y = 10;

initgraph(&gdriver, &gmode, "");

errorcode = graphresult();

if (errorcode != grOk)

{ printf("Graphics error: %s/n",

grapherrormsg(errorcode));

printf("Press any key to halt:");

getch();

exit(1);

}

getpalette(&pal);

sprintf(psize, "The palette has %d /

modifiable entries.", pal.size);

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<pal.size; i++, y+=ht)

{ sprintf(pval,

"palette[%02d]: 0x%02X", i,

pal.colors[i]);

outtextxy(0, y, pval);

}

}

getch();

closegraph();

return 0;

}

函數名: getpass

功 能: 讀一個密碼

用 法: char *getpass(char *prompt);

程式例:#include <conio.h>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 <graphics.h>

#include <stdlib.h>

#include <stdio.h>

#include <conio.h>

#include <dos.h>#define PIXEL_COUNT 1000

#define DELAY_TIME 100 int main(void)

{

int gdriver = DETECT, gmode, errorcode;

int i, x, y, color, maxx, maxy,

maxcolor, seed;

initgraph(&gdriver, &gmode, "");

errorcode = graphresult();

if (errorcode != grOk)

{

printf("Graphics error: %s/n",

grapherrormsg(errorcode));

printf("Press any key to halt:");

getch();

exit(1);

} maxx = getmaxx() + 1;

maxy = getmaxy() + 1;

maxcolor = getmaxcolor() + 1; while (!kbhit())

{

seed = random(32767);

srand(seed);

for (i=0; i<PIXEL_COUNT; i++)

{

x = random(maxx);

y = random(maxy);

color = random(maxcolor);

putpixel(x, y, color);

} delay(DELAY_TIME);

srand(seed);

for (i=0; i<PIXEL_COUNT; i++)

{

x = random(maxx);

y = random(maxy);

color = random(maxcolor);

if (color == getpixel(x, y))

putpixel(x, y, 0);

}

}

getch();

closegraph();

return 0;

}

函數名: gets

功 能: 從流中取一字元串

用 法: char *gets(char *string);

程式例:#include <stdio.h>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 <conio.h>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 <conio.h>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 <graphics.h>

#include <stdlib.h>

#include <stdio.h>

#include <conio.h>

char *font[] = { "DEFAULT_FONT",

"TRIPLEX_FONT",

"SMALL_FONT",

"SANS_SERIF_FONT",

"GOTHIC_FONT"

};

char *dir[] = { "HORIZ_DIR", "VERT_DIR" };

char *hjust[] = { "LEFT_TEXT","CENTER_TEXT","RIGHT_TEXT" };

char *vjust[] = { "BOTTOM_TEXT","CENTER_TEXT","TOP_TEXT" };int main(void)

{

int gdriver = DETECT, gmode, errorcode;

struct textsettingstype textinfo;

int midx, midy, ht;

char fontstr[80], dirstr[80], sizestr[80];

char hjuststr[80], vjuststr[80];

initgraph(&gdriver, &gmode, "");

errorcode = graphresult();

if (errorcode != grOk)

{

printf("Graphics error: %s/n",

grapherrormsg(errorcode));

printf("Press any key to halt:");

getch();

exit(1);

} midx = getmaxx() / 2;

midy = getmaxy() / 2;

gettextsettings(&textinfo);

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]);

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);

getch();

closegraph();

return 0;

}

函數名: gettime

功 能: 取得系統時間

用 法: void gettime(struct time *timep);

程式例:#include <stdio.h>

#include <dos.h>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 <stdio.h>

#include <dos.h>void interrupt get_out(); void interrupt (*oldfunc)();

int looping = 1;

int main(void)

{

puts("Press <Shift><Prt Sc> to terminate");

oldfunc = getvect(5);

setvect(5,get_out);

while (looping);

setvect(5,oldfunc); puts("Success");

return 0;

}void interrupt get_out()

{

looping = 0;

}

函數名: getverify

功 能: 傳回DOS校驗标志狀态

用 法: int getverify(void);

程式例:#include <stdio.h>

#include <dos.h>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 <graphics.h>

#include <stdlib.h>

#include <stdio.h>

#include <conio.h>char *clip[] = { "OFF", "ON" };int main(void)

{

int gdriver = DETECT, gmode, errorcode;

struct viewporttype viewinfo;

int midx, midy, ht;

char topstr[80], botstr[80], clipstr[80];

initgraph(&gdriver, &gmode, "");

errorcode = graphresult();

if (errorcode != grOk)

{ printf("Graphics error: %s/n",

grapherrormsg(errorcode));

printf("Press any key to halt:");

getch();

exit(1);

} midx = getmaxx() / 2;

midy = getmaxy() / 2;

getviewsettings(&viewinfo);

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] );

settextjustify(CENTER_TEXT, CENTER_TEXT);

ht = textheight("W");

outtextxy(midx, midy, topstr);

outtextxy(midx, midy+2*ht, botstr);

outtextxy(midx, midy+4*ht, clipstr);

getch();

closegraph();

return 0;

}

函數名: getw

功 能: 從流中取一整數

用 法: int getw(FILE *strem);

程式例:#include <stdio.h>

#include <stdlib.h>#define FNAME "test.$$$"int main(void)

{

FILE *fp;

int word;

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);

fp = fopen(FNAME, "rb");

if (fp == NULL)

{

printf("Error opening file %s/n", FNAME);

exit(1);

}

word = getw(fp);

if (ferror(fp))

printf("Error reading file/n"); else

printf("Successful read: word = %d/n", word);

fclose(fp);

unlink(FNAME); return 0;

}

函數名: getx

功 能: 傳回目前圖形位置的x坐标

用 法: int far getx(void);

程式例:#include <graphics.h>

#include <stdlib.h>

#include <stdio.h>

#include <conio.h>int main(void)

{

int gdriver = DETECT, gmode, errorcode; char msg[80];

initgraph(&gdriver, &gmode, "");

errorcode = graphresult();

if (errorcode != grOk)

{

printf("Graphics error: %s/n",

grapherrormsg(errorcode));

printf("Press any key to halt:");

getch();

exit(1);

}

moveto(getmaxx() / 2, getmaxy() / 2);

sprintf(msg, "<-(%d, %d) is the here.", getx(), gety());

outtext(msg);

getch();

closegraph();

return 0;

}

函數名: gety

功 能: 傳回目前圖形位置的y坐标

用 法: int far gety(void);

程式例:#include <graphics.h>

#include <stdlib.h>

#include <stdio.h>

#include <conio.h>int main(void)

{

int gdriver = DETECT, gmode, errorcode; char msg[80];

initgraph(&gdriver, &gmode, "");

errorcode = graphresult();

if (errorcode != grOk)

{

printf("Graphics error: %s/n",

grapherrormsg(errorcode));

printf("Press any key to halt:");

getch();

exit(1);

}

moveto(getmaxx() / 2, getmaxy() / 2);

sprintf(msg, "<-(%d, %d) is the here.", getx(), gety());

outtext(msg);

getch();

closegraph();

return 0;

}

函數名: gmtime

功 能: 把日期和時間轉換為格林尼治标準時間(GMT)

用 法: struct tm *gmtime(long *clock);

程式例:#include <stdio.h>

#include <stdlib.h>

#include <time.h>

#include <dos.h>

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 <conio.h>int main(void)

{

clrscr();

gotoxy(35, 12);

cprintf("Hello world");

getch();

return 0;

}

函數名: graphdefaults

功 能: 将所有圖形設定複位為它們的預設值

用 法: void far graphdefaults(void);

程式例:#include <graphics.h>

#include <stdlib.h>

#include <stdio.h>

#include <conio.h>int main(void)

{

int gdriver = DETECT, gmode, errorcode;

int maxx, maxy;

initgraph(&gdriver, &gmode, "c://bor//Borland//bgi");

errorcode = graphresult();

if (errorcode != grOk)

{

printf("Graphics error: %s/n",

grapherrormsg(errorcode));

printf("Press any key to halt:"); getch();

exit(1);

} maxx = getmaxx();

maxy = getmaxy();

setlinestyle(DOTTED_LINE, 0, 3);

line(0, 0, maxx, maxy);

outtextxy( maxx/2, maxy/3,

"Before default values are restored.");

getch();

graphdefaults();

cleardevice();

line(0, 0, maxx, maxy);

outtextxy( maxx/2, maxy/3,

"After restoring default values.");

getch();

closegraph(); return 0;

}

函數名: grapherrormsg

功 能: 傳回一個錯誤資訊串的指針

用 法: char *far grapherrormsg(int errorcode);

程式例:#include <graphics.h>

#include <stdlib.h>

#include <stdio.h>

#include <conio.h>#define NONSENSE -50int main(void)

{

int gdriver = NONSENSE, gmode, errorcode;

initgraph(&gdriver, &gmode, "");

errorcode = graphresult();

if (errorcode != grOk)

{ printf("Graphics error: %s/n",

grapherrormsg(errorcode));

printf("Press any key to halt:");

getch();

exit(1);

}

line(0, 0, getmaxx(), getmaxy());

getch();

closegraph();

return 0;

}

函數名: graphresult

功 能: 傳回最後一次不成功的圖形操作的錯誤代碼

用 法: int far graphresult(void);

程式例:#include <graphics.h>

#include <stdlib.h>

#include <stdio.h>

#include <conio.h>int main(void)

{

int gdriver = DETECT, gmode, errorcode;

initgraph(&gdriver, &gmode, "");

errorcode = graphresult(); if (errorcode != grOk)

{

printf("Graphics error: %s/n",

grapherrormsg(errorcode));

printf("Press any key to halt:");

getch();

exit(1);

}

line(0, 0, getmaxx(), getmaxy());

getch();

closegraph();

return 0;

}

函數名: _graphfreemem

功 能: 使用者可修改的圖形存儲區釋放函數

用 法: void far _graphfreemem(void far *ptr,unsigned size);

程式例:#include <graphics.h>

#include <stdlib.h>

#include <stdio.h>

#include <conio.h>

#include <alloc.h>int main(void)

{

int gdriver = DETECT, gmode, errorcode;

int midx, midy;

clrscr();

printf("Press any key to initialize graphics mode:");

getch();

clrscr();

initgraph(&gdriver, &gmode, "");

errorcode = graphresult();

if (errorcode != grOk)

{

printf("Graphics error: %s/n",

grapherrormsg(errorcode));

printf("Press any key to halt:");

getch();

exit(1);

} midx = getmaxx() / 2;

midy = getmaxy() / 2;

settextjustify(CENTER_TEXT, CENTER_TEXT);

outtextxy( midx, midy,

"Press any key to exit graphics mode:");

getch();

closegraph();

return 0;

}

void far * far _graphgetmem(unsigned size)

{

printf("_graphgetmem called to allocate %d bytes./n",size);

printf("hit any key:");

getch();

printf("/n");

return farmalloc(size);

}

void far _graphfreemem(void far *ptr, unsigned size)

{

printf("_graphfreemem called to free %d bytes./n", size);

printf("hit any key:");

getch();

printf("/n");

farfree(ptr);

}

函數名: _graphgetmem

功 能: 使用者可修改的圖形存儲區配置設定函數

用 法: void far *far _graphgetmem(unsigned size);

程式例:#include <graphics.h>

#include <stdlib.h>

#include <stdio.h>

#include <conio.h>

#include <alloc.h>

int main(void)

{

int gdriver = DETECT, gmode, errorcode;

int midx, midy;

clrscr();

printf("Press any key to initialize graphics mode:");

getch();

clrscr();

initgraph(&gdriver, &gmode, "");

errorcode = graphresult();

if (errorcode != grOk)

{

printf("Graphics error: %s/n",

grapherrormsg(errorcode));

printf("Press any key to halt:");

getch();

exit(1);

}

midx = getmaxx() / 2;

midy = getmaxy() / 2;

settextjustify(CENTER_TEXT, CENTER_TEXT);

outtextxy( midx, midy,

"Press any key to exit graphics mode:");

getch();

closegraph();

return 0;

}

void far * far _graphgetmem(unsigned size)

{

printf("_graphgetmem called to allocate %d bytes./n",

size);

printf("hit any key:");

getch();

printf("/n");

return farmalloc(size);

}

void far _graphfreemem(void far *ptr, unsigned size)

{

printf("_graphfreemem called to free %d bytes./n", size);

printf("hit any key:");

getch();

printf("/n");

farfree(ptr);

}字母H開頭函數函數名: harderr

功 能: 建立一個硬體錯誤處理程式

用 法: void harderr(int (*fptr)());

程式例:

#include <stdio.h>

#include <conio.h>

#include <dos.h>

#define IGNORE 0

#define RETRY 1

#define ABORT 2int buf[500];

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);

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 -parint handler(int errval,int ax,int bp,int si)

{

static char msg[80];

unsigned di;

int drive;

int errorno;

di= _DI;

if (ax < 0)

{

error_win("Device error");

hardretn(ABORT);

}

drive = ax & 0x00FF;

errorno = di & 0x00FF;

sprintf( msg, "Error: %s on drive %c/r/nA)bort, R)etry,/

I)gnore: ", err_msg[errorno], 'A' + drive); hardresume(error_win(msg));

return ABORT;

}

#pragma warn +parint main(void)

{

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);

程式例:

#include <stdio.h>

#include <conio.h>

#include <dos.h>#define IGNORE 0

#define RETRY 1

#define ABORT 2

int buf[500];

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);

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 -parint handler(int errval,int ax,int bp,int si)

{

static char msg[80];

unsigned di;

int drive;

int errorno; di= _DI;

if (ax < 0)

{

error_win("Device error");

hardretn(ABORT);

}

drive = ax & 0x00FF;

errorno = di & 0x00FF;

sprintf( msg, "Error: %s on drive %c/r/nA)bort, R)etry,/

I)gnore: ", err_msg[errorno], 'A' + drive);

hardresume(error_win(msg)); return ABORT;

}

#pragma warn +parint main(void)

{

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 <conio.h>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 <stdio.h>

#include <math.h>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;

}字母I開頭函數函數名: imagesize

功 能: 傳回儲存位圖像所需的位元組數

用 法: unsigned far imagesize( int left, int top, int right,

int bottom );

程式例:#include <graphics.h>

#include <stdlib.h>

#include <stdio.h>

#include <conio.h>#define ARROW_SIZE 10void draw_arrow(int x, int y);int main(void)

{

int gdriver = DETECT, gmode, errorcode;

void *arrow;

int x, y, maxx;

unsigned int size;

initgraph(&gdriver, &gmode, "");

errorcode = graphresult();

if (errorcode != grOk)

{

printf("Graphics error: %s/n",

grapherrormsg(errorcode));

printf("Press any key to halt:");

getch();

exit(1);

} maxx = getmaxx();

x = 0;

y = getmaxy() / 2;

draw_arrow(x, y);

size = imagesize(x, y-ARROW_SIZE, x+(4*ARROW_SIZE),

y+ARROW_SIZE);

arrow = malloc(size);

getimage(x, y-ARROW_SIZE, x+(4*ARROW_SIZE),

y+ARROW_SIZE, arrow);

while (!kbhit())

{

putimage(x, y-ARROW_SIZE, arrow, XOR_PUT); x += ARROW_SIZE;

if (x >= maxx)

x = 0;

putimage(x, y-ARROW_SIZE, arrow, XOR_PUT);

}

free(arrow);

closegraph();

return 0;

}void draw_arrow(int x, int y)

{

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 <graphics.h>

#include <stdlib.h>

#include <stdio.h>

#include <conio.h>int main(void)

{

int gdriver = DETECT, gmode, errorcode;

initgraph(&gdriver, &gmode, "");

errorcode = graphresult(); if (errorcode != grOk)

{

printf("Graphics error: %s/n",

grapherrormsg(errorcode));

printf("Press any key to halt:"); getch();

exit(1);

}

line(0, 0, getmaxx(), getmaxy());

getch();

closegraph();

return 0;

}

函數名: inport

功 能: 從硬體端口中輸入

用 法: int inp(int protid);

程式例:#include <stdio.h>

#include <dos.h>int main(void)

{

int result;

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

return 0;

}

函數名: insline

功 能: 在文本視窗中插入一個空行

用 法: void insline(void);

程式例:#include <conio.h>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 <graphics.h>

#include <stdlib.h>

#include <stdio.h>

#include <conio.h>

int huge detectEGA(void);

void checkerrors(void);int main(void)

{

int gdriver, gmode;

gdriver = installuserdriver("EGA", detectEGA);

gdriver = DETECT;

checkerrors();

initgraph(&gdriver, &gmode, "");

checkerrors();

line(0, 0, getmaxx(), getmaxy());

getch();

closegraph();

return 0;

}

int huge detectEGA(void)

{

int driver, mode, sugmode = 0; detectgraph(&driver, &mode);

if ((driver == EGA) || (driver == VGA))

return sugmode;

else

return grError;

}

void checkerrors(void)

{

int errorcode;

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 <graphics.h>

#include <stdlib.h>

#include <stdio.h>

#include <conio.h>

void checkerrors(void);int main(void)

{

int gdriver = DETECT, gmode;

int userfont;

int midx, midy;

initgraph(&gdriver, &gmode, ""); midx = getmaxx() / 2;

midy = getmaxy() / 2;

checkerrors();

userfont = installuserfont("USER.CHR");

checkerrors();

settextstyle(userfont, HORIZ_DIR, 4);

outtextxy(midx, midy, "Testing!");

getch();

closegraph();

return 0;

}

void checkerrors(void)

{

int errorcode;

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 <stdio.h>

#include <conio.h>

#include <dos.h>#define VIDEO 0x10void movetoxy(int x, int y)

{ union REGS regs; regs.h.ah = 2;

regs.h.dh = y;

regs.h.dl = x;

regs.h.bh = 0;

int86(VIDEO, &regs, &regs);

}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 <dos.h>

#include <process.h>

#include <stdio.h>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 <stdio.h>

#include <dos.h>

int delete_file(char near *filename)

{

union REGS regs;

int ret; regs.h.ah = 0x41;

regs.x.dx = (unsigned) filename;

ret = intdos(&regs, &regs);

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 <stdio.h>

#include <dos.h>

int delete_file(char far *filename)

{

union REGS regs; struct SREGS sregs; int ret;

regs.h.ah = 0x41;

regs.x.dx = FP_OFF(filename);

sregs.ds = FP_SEG(filename);

ret = intdosx(&regs, &regs, &sregs);

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 <stdio.h>

#include <string.h>

#include <dir.h>

#include <dos.h>#define CF 1 int main(void)

{ char directory[80];

struct REGPACK reg; printf("Enter directory to change to: ");

gets(directory);

reg.r_ax = 0x3B << 8;

reg.r_dx = FP_OFF(directory);

reg.r_ds = FP_SEG(directory);

intr(0x21, &reg);

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 <stdio.h>

#include <dir.h>

#include <io.h>int main(void)

{

int stat;

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 <stdio.h>

#include <io.h>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 <stdlib.h>

#include <stdio.h>int main(void)

{

int number = 12345;

char string[25]; itoa(number, string, 10); printf("integer = %d string = %s/n", number, string);

return 0;

}字母K開頭函數函數名: kbhit

功 能: 檢查目前按下的鍵

用 法: int kbhit(void);

程式例:#include <conio.h>int main(void)

{

cprintf("Press any key to continue:");

while (!kbhit()) ;

cprintf("/r/nA key was pressed.../r/n");

return 0;

}

函數名: keep

功 能: 退出并繼續駐留

用 法: void keep(int status, int size);

程式例:#include <dos.h>

#define INTR 0x1C

#define ATTR 0x7900extern unsigned _heaplen = 1024;

extern unsigned _stklen = 512;void interrupt ( *oldhandler)(void);void interrupt handler(void)

{

unsigned int (far *screen)[80];

static int count;

screen = MK_FP(0xB800,0);

count++;

count %= 10;

screen[0][79] = count + '0' + ATTR;

oldhandler();

}

int main(void)

{

oldhandler = getvect(INTR);

setvect(INTR, handler);

keep(0, (_SS + (_SP/16) - _psp));

return 0;

}字母L開頭函數函數名: labs

功 能: 取長整型絕對值

用 法: long labs(long n);

程式例:#include <stdio.h>

#include <math.h>int main(void)

{

long result;

long x = -12345678L; result= labs(x); printf("number: %ld abs value: %ld/n",

x, result); return 0;

}

函數名: ldexp

功 能: 計算value*2的幂

用 法: double ldexp(double value, int exp);

程式例:

#include <stdio.h>

#include <math.h>int main(void)

{

double value;

double x = 2;

value = ldexp(x,3); printf("The ldexp value is: %lf/n",

value); return 0;

}

函數名: ldiv

功 能: 兩個長整型數相除, 傳回商和餘數

用 法: ldiv_t ldiv(long lnumer, long ldenom);

程式例:#include <stdlib.h>

#include <stdio.h>int main(void)

{

ldiv_t lx;

lx = ldiv(100000L, 30000L);

printf("100000 div 30000 = %ld remainder %ld/n",

lx.quot, lx.rem);

return 0;

}

函數名: lfind

功 能: 執行線性搜尋

用 法: void *lfind( void *key, void *base, int *nelem,

int width, int (*fcmp)() );

程式例:#include <stdio.h>

#include <stdlib.h>int compare(int *x, int *y)

{

return( *x - *y );

}int main(void)

{

int array[5] = {35, 87, 46, 99, 12};

size_t nelem = 5;

int key;

int *result; key = 99;

result = lfind(&key, array, &nelem,

sizeof(int), (int(*)(const void *,const void *))compare);

if (result)

printf("Number %d found/n",key);

else

printf("Number %d not found/n",key); return 0;

}

函數名: line

功 能: 在指定兩點間畫一直線

用 法: void far line(int x0, int y0, int x1, int y1);

程式例:#include <graphics.h>

#include <stdlib.h>

#include <stdio.h>

#include <conio.h>int main(void)

{

int gdriver = DETECT, gmode, errorcode;

int xmax, ymax;

initgraph(&gdriver, &gmode, "");

errorcode = graphresult();

if (errorcode != grOk)

{

printf("Graphics error: %s/n",

grapherrormsg(errorcode)); printf("Press any key to halt:");

getch();

exit(1);

} setcolor(getmaxcolor());

xmax = getmaxx();

ymax = getmaxy();

line(0, 0, xmax, ymax);

getch();

closegraph();

return 0;

}

函數名: linerel

功 能: 從目前位置點(CP)到與CP有一給定相對距離的點畫一直線

用 法: void far linerel(int dx, int dy);

程式例:#include <graphics.h>

#include <stdlib.h>

#include <stdio.h>

#include <conio.h>int main(void)

{

int gdriver = DETECT, gmode, errorcode; char msg[80];

initgraph(&gdriver, &gmode, "");

errorcode = graphresult();

if (errorcode != grOk)

{

printf("Graphics error: %s/n",

grapherrormsg(errorcode));

printf("Press any key to halt:");

getch();

exit(1);

}

moveto(20, 30);

sprintf(msg, " (%d, %d)", getx(), gety());

outtextxy(20, 30, msg);

linerel(100, 100);

sprintf(msg, " (%d, %d)", getx(), gety());

outtext(msg);

getch();

closegraph();

return 0;

}

函數名: localtime

功 能: 把日期和時間轉變為結構

用 法: struct tm *localtime(long *clock);

程式例:#include <time.h>

#include <stdio.h>

#include <dos.h>int main(void)

{

time_t timer;

struct tm *tblock;

timer = time(NULL);

tblock = localtime(&timer); printf("Local time is: %s", asctime(tblock)); return 0;

}

函數名: lock

功 能: 設定檔案共享鎖

用 法: int lock(int handle, long offset, long length);

程式例:#include <io.h>

#include <fcntl.h>

#include <sys/stat.h>

#include <process.h>

#include <share.h>

#include <stdio.h>int main(void)

{ int handle, status;

long length;

handle = sopen("c://autoexec.bat",

O_RDONLY,SH_DENYNO,S_IREAD); if (handle < 0)

{

printf("sopen failed/n");

exit(1);

} length = filelength(handle);

status = lock(handle,0L,length/2); if (status == 0)

printf("lock succeeded/n");

else

printf("lock failed/n"); status = unlock(handle,0L,length/2); if (status == 0)

printf("unlock succeeded/n");

else

printf("unlock failed/n"); close(handle);

return 0;

}

函數名: log

功 能: 對數函數ln(x)

用 法: double log(double x);

程式例:#include <math.h>

#include <stdio.h>int main(void)

{

double result;

double x = 8.6872; result = log(x); printf("The natural log of %lf is %lf/n", x, result); return 0;

}

函數名: log10

功 能: 對數函數log

用 法: double log10(double x);

程式例:#include <math.h>

#include <stdio.h>int main(void)

{

double result;

double x = 800.6872; result = log10(x); printf("The common log of %lf is %lf/n", x, result); return 0;

}

函數名: longjump

功 能: 執行非局部轉移

用 法: void longjump(jmp_buf env, int val);

程式例:#include <stdio.h>

#include <setjmp.h>

#include <stdlib.h>void subroutine(jmp_buf);int main(void)

{ int value;

jmp_buf jumper; value = setjmp(jumper);

if (value != 0)

{

printf("Longjmp with value %d/n", value);

exit(value);

} printf("About to call subroutine ... /n");

subroutine(jumper); return 0;

}void subroutine(jmp_buf jumper)

{

longjmp(jumper,1);

}

函數名: lowvideo

功 能: 選擇低亮度字元

用 法: void lowvideo(void);

程式例:#include <conio.h>int main(void)

{

clrscr(); highvideo();

cprintf("High Intesity Text/r/n");

lowvideo(); gotoxy(1,2);

cprintf("Low Intensity Text/r/n"); return 0;

}

函數名: lrotl, _lrotl

功 能: 将無符号長整型數向左循環移位

用 法: unsigned long lrotl(unsigned long lvalue, int count);

unsigned long _lrotl(unsigned long lvalue, int count);

程式例:

#include <stdlib.h>

#include <stdio.h>int main(void)

{

unsigned long result;

unsigned long value = 100; result = _lrotl(value,1);

printf("The value %lu rotated left one bit is: %lu/n",

value, result);

return 0;

}

函數名: lsearch

功 能: 線性搜尋

用 法: void *lsearch( const void *key, void *base,

size_t *nelem, size_t width,

int (*fcmp)(const void *, const void *));

程式例:#include <stdio.h>

#include <stdlib.h>int compare(int *x, int *y)

{

return( *x - *y );

}int main(void)

{

int array[5] = {35, 87, 46, 99, 12};

size_t nelem = 5;

int key;

int *result; key = 99;

result = lfind(&key, array, &nelem,

sizeof(int), (int(*)(const void *,const void *))compare);

if (result)

printf("Number %d found/n",key);

else

printf("Number %d not found/n",key); return 0;

}

函數名: lseek

功 能: 移動檔案讀/寫指針

用 法: long lseek(int handle, long offset, int fromwhere);

程式例:#include <sys/stat.h>

#include <string.h>

#include <stdio.h>

#include <fcntl.h>

#include <io.h>int main(void)

{

int handle;

char msg[] = "This is a test";

char ch;

handle = open("TEST.$$$", O_CREAT | O_RDWR,

S_IREAD | S_IWRITE);

write(handle, msg, strlen(msg));

lseek(handle, 0L, SEEK_SET);

do

{

read(handle, &ch, 1);

printf("%c", ch);

} while (!eof(handle)); close(handle);

return 0;

}字母M開頭函數函數名: malloc

功 能: 記憶體配置設定函數

用 法: void *malloc(unsigned size);

程式例:#include <stdio.h>

#include <string.h>

#include <alloc.h>

#include <process.h>int main(void)

{

char *str;

if ((str = malloc(10)) == NULL)

{

printf("Not enough memory to allocate buffer/n");

exit(1);

}

strcpy(str, "Hello");

printf("String is %s/n", str);

free(str); return 0;

}

函數名: matherr

功 能: 使用者可修改的數學錯誤處理程式

用 法: int matherr(struct exception *e);

程式例:#include<math.h>int matherr(struct exception *a)

{

return 1;

}

函數名: memccpy

功 能: 從源source中拷貝n個位元組到目标destin中

用 法: void *memccpy( void *destin, void *source,

unsigned char ch, unsigned n );

程式例:#include <string.h>

#include <stdio.h>int main(void)

{

char *src = "This is the source string";

char dest[50];

char *ptr; ptr = memccpy(dest, src, 'c', strlen(src)); if (ptr)

{

*ptr = '/0';

printf("The character was found: %s/n", dest);

}

else

printf("The character wasn't found/n");

return 0;

}

函數名: memchr

功 能: 在數組的前n個位元組中搜尋字元

用 法: void *memchr(void *s, char ch, unsigned n);

程式例:

#include <string.h>

#include <stdio.h>

int main(void)

{

char str[17];

char *ptr; strcpy(str, "This is a string");

ptr = memchr(str, 'r', strlen(str));

if (ptr) printf("The character 'r' is at position: %d/n",

ptr - str);

else

printf("The character was not found/n");

return 0;

}

函數名: memcpy

功 能: 從源source中拷貝n個位元組到目标destin中

用 法: void *memcpy(void *destin,void *source,unsigned n);

程式例:#include <stdio.h>

#include <string.h>

int main(void)

{

char src[] = "******************************";

char dest[] = "abcdefghijlkmnopqrstuvwxyz0123456709";

char *ptr;

printf("destination before memcpy: %s/n", dest);

ptr = memcpy(dest, src, strlen(src)); if (ptr)

printf("destination after memcpy: %s/n", dest);

else

printf("memcpy failed/n");

return 0;

}

函數名: memicmp

功 能: 比較兩個串s1和s2的前n個位元組, 忽略大小寫

用 法: int memicmp(void *s1, void *s2, unsigned n);

程式例:#include <stdio.h>

#include <string.h>int main(void)

{

char *buf1 = "ABCDE123";

char *buf2 = "abcde456";

int stat;

stat = memicmp(buf1, buf2, 5); printf("The strings to position 5 are ");

if (stat)

printf("not ");

printf("the same/n");

return 0;

}

函數名: memmove

功 能: 移動一塊位元組

用 法: void *memmove(void *destin,void *source,unsigned n);

程式例:#include <string.h>

#include <stdio.h>int main(void)

{

char *dest = "abcdefghijklmnopqrstuvwxyz0123456789";

char *src = "******************************";

printf("destination prior to memmove: %s/n", dest);

memmove(dest, src, 26); printf("destination after memmove: %s/n", dest);

return 0;

}

函數名: memset

功 能: 設定s中的所有位元組為ch, s數組的大小由n給定

用 法: void *memset(void *s, char ch, unsigned n);

程式例:#include <string.h>

#include <stdio.h>

#include <mem.h>int main(void)

{

char buffer[] = "Hello world/n"; printf("Buffer before memset: %s/n", buffer); memset(buffer, '*', strlen(buffer) - 1);

printf("Buffer after memset: %s/n", buffer);

return 0;

}

函數名: mkdir

功 能: 建立一個目錄

用 法: int mkdir(char *pathname);

程式例:#include <stdio.h>

#include <conio.h>

#include <process.h>

#include <dir.h>int main(void)

{

int status;

clrscr();

status = mkdir("asdfjklm");

(!status) ? (printf("Directory created/n")) :

(printf("Unable to create directory/n")); getch();

system("dir");

getch(); status = rmdir("asdfjklm");

(!status) ? (printf("Directory deleted/n")) :

(perror("Unable to delete directory"));

return 0;

}

函數名: mktemp

功 能: 建立唯一的檔案名

用 法: char *mktemp(char *template);

程式例:#include <dir.h>

#include <stdio.h>int main(void)

{

char *fname = "TXXXXXX", *ptr; ptr = mktemp(fname);

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

return 0;

}

函數名: MK_FP

功 能: 設定一個遠指針

用 法: void far *MK_FP(unsigned seg, unsigned off);

程式例:

#include <dos.h>

#include <graphics.h>int main(void)

{

int gd, gm, i;

unsigned int far *screen; detectgraph(&gd, &gm);

if (gd == HERCMONO) screen = MK_FP(0xB000, 0);

else

screen = MK_FP(0xB800, 0);

for (i=0; i<26; i++)

screen[i] = 0x0700 + ('a' + i);

return 0;

}

函數名: modf

功 能: 把數分為指數和尾數

用 法: double modf(double value, double *iptr);

程式例:#include <math.h>

#include <stdio.h>int main(void)

{

double fraction, integer;

double number = 100000.567; fraction = modf(number, &integer); printf("The whole and fractional parts of %lf are %lf/

and %lf/n",number, integer, fraction);

return 0;

}

函數名: movedata

功 能: 拷貝位元組

用 法: void movedata(int segsrc, int offsrc, int segdest,

int offdest, unsigned numbytes);

程式例:#include <mem.h>#define MONO_BASE 0xB000

void save_mono_screen(char near *buffer)

{ movedata(MONO_BASE, 0, _DS, (unsigned)buffer, 80*25*2);

}int main(void)

{

char buf[80*25*2];

save_mono_screen(buf);

}

函數名: moverel

功 能: 将目前位置(CP)移動一相對距離

用 法: void far moverel(int dx, int dy);

程式例:#include <graphics.h>

#include <stdlib.h>

#include <stdio.h>

#include <conio.h>int main(void)

{

int gdriver = DETECT, gmode, errorcode; char msg[80];

initgraph(&gdriver, &gmode, "");

errorcode = graphresult();

if (errorcode != grOk)

{ printf("Graphics error: %s/n",

grapherrormsg(errorcode));

printf("Press any key to halt:");

getch();

exit(1);

}

moveto(20, 30);

putpixel(getx(), gety(), getmaxcolor());

sprintf(msg, " (%d, %d)", getx(), gety());

outtextxy(20, 30, msg);

moverel(100, 100);

putpixel(getx(), gety(), getmaxcolor());

sprintf(msg, " (%d, %d)", getx(), gety());

outtext(msg);

getch();

closegraph();

return 0;

}

函數名: movetext

功 能: 将螢幕文本從一個矩形區域拷貝到另一個矩形區域

用 法: int movetext( int left, int top, int right,

int bottom, int newleft, int newtop );

程式例:

#include <conio.h>

#include <string.h>int main(void)

{

char *str = "This is a test string"; clrscr();

cputs(str); getch(); movetext(1, 1, strlen(str), 2, 10, 10);

getch(); return 0;

}

函數名: moveto

功 能: 将CP移到(x, y)

用 法: void far moveto(int x, int y);

程式例:#include <graphics.h>

#include <stdlib.h>

#include <stdio.h>

#include <conio.h>int main(void)

{

int gdriver = DETECT, gmode, errorcode; char msg[80];

initgraph(&gdriver, &gmode, "");

errorcode = graphresult();

if (errorcode != grOk)

{

printf("Graphics error: %s/n",

grapherrormsg(errorcode));

printf("Press any key to halt:");

getch();

exit(1); }

moveto(20, 30);

putpixel(getx(), gety(), getmaxcolor());

sprintf(msg, " (%d, %d)", getx(), gety());

outtextxy(20, 30, msg);

moveto(100, 100);

putpixel(getx(), gety(), getmaxcolor());

sprintf(msg, " (%d, %d)", getx(), gety());

outtext(msg);

getch();

closegraph();

return 0;

}

函數名: movemem

功 能: 移動一塊位元組

用 法: void movemem( void *source, void *destin,

unsigned len );

程式例:#include <mem.h>

#include <alloc.h>

#include <stdio.h>

#include <string.h>int main(void)

{

char *source = "Borland International"; char *destination;

int length; length = strlen(source);

destination = malloc(length + 1);

movmem(source,destination,length);

printf("%s/n",destination); return 0;

}字母N開頭函數函數名: normvideo

功 能: 選擇正常亮度字元

用 法: void normvideo(void);

程式例:#include <conio.h>int main(void)

{

normvideo();

cprintf("NORMAL Intensity Text/r/n");

return 0;

}

函數名: nosound

功 能: 關閉PC揚聲器

用 法: void nosound(void);

程式例:int main(void)

{

sound(7);

delay(10000);

nosound();

}字母O開頭函數函數名: open

功 能: 打開一個檔案用于讀或寫

用 法: int open(char *pathname,int access[,int permiss]);

程式例:#include <string.h>

#include <stdio.h>

#include <fcntl.h>

#include <io.h>int main(void)

{

int handle;

char msg[] = "Hello world"; if ((handle = open("TEST.$$$", O_CREAT | O_TEXT)) == -1)

{

perror("Error:");

return 1;

}

write(handle, msg, strlen(msg));

close(handle);

return 0;

}

函數名: outport

功 能: 輸出整數到硬體端口中

用 法: void outport(int port, int value);

程式例:#include <stdio.h>

#include <dos.h>int main(void)

{

int value = 64;

int port = 0; outportb(port, value); printf("Value %d sent to port number %d/n",value,port);

return 0;

}

函數名: outportb

功 能: 輸出位元組到硬體端口中

用 法: void outportb(int port, char byte);

程式例:#include <stdio.h>

#include <dos.h>int main(void)

{

int value = 64;

int port = 0; outportb(port, value); printf("Value %d sent to port number %d/n",value,port);

return 0;

}

函數名: outtext

功 能: 在視區顯示一個字元串

用 法: void far outtext(char far *textstring);

程式例:#include <graphics.h>

#include <stdlib.h>

#include <stdio.h>

#include <conio.h>int main(void)

{

int gdriver = DETECT, gmode, errorcode; int midx, midy;

initgraph(&gdriver, &gmode, "");

errorcode = graphresult();

if (errorcode != grOk)

{

printf("Graphics error: %s/n",

grapherrormsg(errorcode));

printf("Press any key to halt:");

getch(); exit(1);

} midx = getmaxx() / 2;

midy = getmaxy() / 2;

moveto(midx, midy);

outtext("This ");

outtext("is ");

outtext("a ");

outtext("test.");

getch();

closegraph();

return 0;

}

函數名: outtextxy

功 能: 在指定位置顯示一字元串

用 法: void far outtextxy(int x, int y, char *textstring);

程式例:#include <graphics.h>

#include <stdlib.h>

#include <stdio.h>

#include <conio.h>int main(void)

{

int gdriver = DETECT, gmode, errorcode; int midx, midy;

initgraph( &gdriver, &gmode, "");

errorcode = graphresult();

if (errorcode != grOk)

{

printf("Graphics error: %s/n",

grapherrormsg(errorcode));

printf("Press any key to halt:");

getch(); exit(1);

} midx = getmaxx() / 2;

midy = getmaxy() / 2;

outtextxy(midx, midy, "This is a test.");

getch();

closegraph();

return 0;

}字母P開頭函數函數名: parsfnm

功 能: 分析檔案名

用 法: char *parsfnm( char *cmdline, struct fcb *fcbptr,

int option );

程式例:#include <process.h>

#include <string.h>

#include <stdio.h>

#include <dos.h>int main(void)

{

char line[80];

struct fcb blk;

printf("Enter drive and file name (no path - ie. /

a:file.dat)/n");

gets(line);

if (parsfnm(line, &blk, 1) == NULL)

printf("Error in parsfm call/n");

else

printf("Drive #%d Name: %11s/n",

blk.fcb_drive, blk.fcb_name);

return 0;

}

函數名: peek

功 能: 檢查存儲單元

用 法: int peek(int segment, unsigned offset);

程式例:#include <stdio.h>

#include <conio.h>

#include <dos.h>int main(void)

{

int value = 0; printf("The current status of your keyboard is:/n");

value = peek(0x0040, 0x0017);

if (value & 1)

printf("Right shift on/n");

else

printf("Right shift off/n"); if (value & 2)

printf("Left shift on/n");

else

printf("Left shift off/n"); if (value & 4)

printf("Control key on/n"); else

printf("Control key off/n"); if (value & 8)

printf("Alt key on/n");

else

printf("Alt key off/n"); if (value & 16)

printf("Scroll lock on/n");

else

printf("Scroll lock off/n");

if (value & 32)

printf("Num lock on/n");

else

printf("Num lock off/n"); if (value & 64)

printf("Caps lock on/n");

else

printf("Caps lock off/n"); return 0;

}

函數名: peekb

功 能: 檢查存儲單元

用 法: char peekb (int segment, unsigned offset);

程式例:#include <stdio.h>

#include <conio.h>

#include <dos.h>int main(void)

{

int value = 0; printf("The current status of your keyboard is:/n"); value = peekb(0x0040, 0x0017);

if (value & 1)

printf("Right shift on/n");

else

printf("Right shift off/n"); if (value & 2)

printf("Left shift on/n");

else

printf("Left shift off/n"); if (value & 4)

printf("Control key on/n"); else

printf("Control key off/n"); if (value & 8)

printf("Alt key on/n");

else

printf("Alt key off/n"); if (value & 16)

printf("Scroll lock on/n");

else

printf("Scroll lock off/n"); if (value & 32)

printf("Num lock on/n");

else

printf("Num lock off/n"); if (value & 64)

printf("Caps lock on/n");

else

printf("Caps lock off/n"); return 0;

}

函數名: perror

功 能: 系統錯誤資訊

用 法: void perror(char *string);

程式例:#include <stdio.h>int main(void)

{

FILE *fp; fp = fopen("perror.dat", "r");

if (!fp)

perror("Unable to open file for reading"); return 0;

}

函數名: pieslice

功 能: 繪制并填充一個扇形

用 法: void far pieslice( int x, int stanle, int endangle,

int radius );

程式例:#include <graphics.h>

#include <stdlib.h>

#include <stdio.h>

#include <conio.h>int main(void)

{

int gdriver = DETECT, gmode, errorcode;

int midx, midy;

int stangle = 45, endangle = 135, radius = 100;

initgraph(&gdriver, &gmode, "");

errorcode = graphresult();

if (errorcode != grOk)

{

printf("Graphics error: %s/n",

grapherrormsg(errorcode));

printf("Press any key to halt:"); getch();

exit(1);

} midx = getmaxx() / 2;

midy = getmaxy() / 2;

setfillstyle(EMPTY_FILL, getmaxcolor());

pieslice(midx, midy, stangle, endangle, radius);

getch();

closegraph();

return 0;

}

函數名: poke

功 能: 存值到一個給定存儲單元

用 法: void poke(int segment, int offset, int value);

程式例:#include <dos.h>

#include <conio.h>int main(void)

{

clrscr();

cprintf("Make sure the scroll lock key is off and press/

any key/r/n");

getch(); poke(0x0000,0x0417,16);

cprintf("The scroll lock is now on/r/n");

return 0;

}

函數名: pokeb

功 能: 存值到一個給定存儲單元

用 法: void pokeb(int segment, int offset, char value);

程式例:#include <dos.h>

#include <conio.h>int main(void)

{

clrscr();

cprintf("Make sure the scroll lock key is off and press/

any key/r/n");

getch(); pokeb(0x0000,0x0417,16);

cprintf("The scroll lock is now on/r/n");

return 0;

}

函數名: poly

功 能: 根據參數産生一個多項式

用 法: double poly(double x, int n, double c[]);

程式例:

#include <stdio.h>

#include <math.h>int main(void)

{

double array[] = { -1.0, 5.0, -2.0, 1.0 };

double result;

result = poly(2.0, 3, array);

printf("The polynomial: x**3 - 2.0x**2 + 5x - 1 at 2.0 /

is %lf/n",result);

return 0;

}

函數名: pow

功 能: 指數函數(x的y次方)

用 法: double pow(double x, double y);

程式例:#include <math.h>

#include <stdio.h>int main(void)

{

double x = 2.0, y = 3.0;

printf("%lf raised to %lf is %lf/n", x, y, pow(x, y));

return 0;

}

函數名: pow10

功 能: 指數函數(10的p次方)

用 法: double pow10(int p);

程式例:#include <math.h>

#include <stdio.h>int main(void)

{

double p = 3.0;

printf("Ten raised to %lf is %lf/n", p, pow10(p));

return 0;

}

函數名: printf

功 能: 産生格式化輸出的函數

用 法: int printf(char *format...);

程式例:#include <stdio.h>

#include <string.h>#define I 555

#define R 5.5int main(void)

{

int i,j,k,l; char buf[7];

char *prefix = buf;

char tp[20];

printf("prefix 6d 6o 8x 10.2e "

"10.2f/n");

strcpy(prefix,"%"); for (i = 0; i < 2; i++)

{

for (j = 0; j < 2; j++)

for (k = 0; k < 2; k++)

for (l = 0; l < 2; l++)

{

if (i==0) strcat(prefix,"-"); if (j==0) strcat(prefix,"+");

if (k==0) strcat(prefix,"#");

if (l==0) strcat(prefix,"0");

printf("%5s |",prefix);

strcpy(tp,prefix);

strcat(tp,"6d |");

printf(tp,I);

strcpy(tp,"");

strcpy(tp,prefix);

strcat(tp,"6o |");

printf(tp,I);

strcpy(tp,"");

strcpy(tp,prefix);

strcat(tp,"8x |");

printf(tp,I); strcpy(tp,"");

strcpy(tp,prefix);

strcat(tp,"10.2e |");

printf(tp,R);

strcpy(tp,prefix);

strcat(tp,"10.2f |");

printf(tp,R);

printf(" /n");

strcpy(prefix,"%");

}

}

return 0;

}

函數名: putc

功 能: 輸出一字元到指定流中

用 法: int putc(int ch, FILE *stream);

程式例:#include <stdio.h>int main(void)

{

char msg[] = "Hello world/n";

int i = 0; while (msg[i])

putc(msg[i++], stdout); return 0;

}

函數名: putch

功 能: 輸出字元到控制台

用 法: int putch(int ch);

程式例:#include <stdio.h>

#include <conio.h>int main(void)

{

char ch = 0; printf("Input a string:");

while ((ch != '/r')) {

ch = getch();

putch(ch);

}

return 0;

}

函數名: putchar

功 能: 在stdout上輸出字元

用 法: int putchar(int ch);

程式例:#include <stdio.h>

#define LEFT_TOP 0xDA

#define RIGHT_TOP 0xBF

#define HORIZ 0xC4

#define VERT 0xB3

#define LEFT_BOT 0xC0

#define RIGHT_BOT 0xD9int main(void)

{

char i, j;

putchar(LEFT_TOP);

for (i=0; i<10; i++)

putchar(HORIZ);

putchar(RIGHT_TOP);

putchar('/n');

for (i=0; i<4; i++)

{

putchar(VERT);

for (j=0; j<10; j++)

putchar(' ');

putchar(VERT);

putchar('/n');

}

putchar(LEFT_BOT);

for (i=0; i<10; i++)

putchar(HORIZ); putchar(RIGHT_BOT);

putchar('/n'); return 0;

}

函數名: putenv

功 能: 把字元串加到目前環境中

用 法: int putenv(char *envvar);

程式例:#include <stdio.h>

#include <stdlib.h>

#include <alloc.h>

#include <string.h>

#include <dos.h>int main(void)

{

char *path, *ptr;

int i = 0;

ptr = getenv("PATH");

path = malloc(strlen(ptr)+15);

strcpy(path,"PATH=");

strcat(path,ptr);

strcat(path,";c://temp");

putenv(path);

while (environ[i])

printf("%s/n",environ[i++]); return 0;

}

函數名: putimage

功 能: 在螢幕上輸出一個位圖

用 法: void far putimage( int x, int y, void far *bitmap,

int op );

程式例:#include <graphics.h>

#include <stdlib.h>

#include <stdio.h>

#include <conio.h>#define ARROW_SIZE 10void draw_arrow(int x, int y);int main(void)

{

int gdriver = DETECT, gmode, errorcode;

void *arrow;

int x, y, maxx;

unsigned int size;

initgraph(&gdriver, &gmode, "");

errorcode = graphresult();

if (errorcode != grOk)

{

printf("Graphics error: %s/n",

grapherrormsg(errorcode));

printf("Press any key to halt:");

getch();

exit(1);

} maxx = getmaxx();

x = 0;

y = getmaxy() / 2;

draw_arrow(x, y);

size = imagesize(x, y-ARROW_SIZE, x+(4*ARROW_SIZE),

y+ARROW_SIZE);

arrow = malloc(size);

getimage(x, y-ARROW_SIZE, x+(4*ARROW_SIZE),

y+ARROW_SIZE, arrow);

while (!kbhit())

{

putimage(x, y-ARROW_SIZE, arrow, XOR_PUT); x += ARROW_SIZE;

if (x >= maxx)

x = 0;

putimage(x, y-ARROW_SIZE, arrow, XOR_PUT);

}

free(arrow);

closegraph();

return 0;

}void draw_arrow(int x, int y)

{

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);

}

函數名: putpixel

功 能: 在指定位置畫一像素

用 法: void far putpixel (int x, int y, int pixelcolor);

程式例:#include <graphics.h>

#include <stdlib.h>

#include <stdio.h>

#include <conio.h>

#include <dos.h>#define PIXEL_COUNT 1000

#define DELAY_TIME 100 int main(void)

{

int gdriver = DETECT, gmode, errorcode;

int i, x, y, color, maxx, maxy, maxcolor, seed;

initgraph(&gdriver, &gmode, "");

errorcode = graphresult();

if (errorcode != grOk)

{ printf("Graphics error: %s/n",

grapherrormsg(errorcode));

printf("Press any key to halt:");

getch();

exit(1);

} maxx = getmaxx() + 1;

maxy = getmaxy() + 1;

maxcolor = getmaxcolor() + 1; while (!kbhit())

{

seed = random(32767);

srand(seed);

for (i=0; i<PIXEL_COUNT; i++)

{

x = random(maxx);

y = random(maxy);

color = random(maxcolor);

putpixel(x, y, color);

} delay(DELAY_TIME);

srand(seed); for (i=0; i<PIXEL_COUNT; i++)

{

x = random(maxx);

y = random(maxy);

color = random(maxcolor);

if (color == getpixel(x, y))

putpixel(x, y, 0);

} }

getch();

closegraph();

return 0;

}

函數名: puts

功 能: 送一字元串到流中

用 法: int puts(char *string);

程式例:#include <stdio.h>

int main(void)

{

char string[] = "This is an example output string/n"; puts(string);

return 0;

}

函數名: puttext

功 能: 将文本從存儲區拷貝到螢幕

用 法: int puttext( int left, int top, int right,

int bottom, void *source );

程式例:#include <conio.h>

int main(void)

{

char buffer[512];

clrscr();

gotoxy(20, 12); cprintf("This is a test. Press any key to continue ...");

getch();

gettext(20, 12, 36, 21,buffer);

clrscr();

gotoxy(20, 12);

puttext(20, 12, 36, 21, buffer);

getch(); return 0;

}

函數名: putw

功 能: 把一字元或字送到流中

用 法: int putw(int w, FILE *stream);

程式例:#include <stdio.h>

#include <stdlib.h>#define FNAME "test.$$$"int main(void)

{

FILE *fp;

int word;

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);

fp = fopen(FNAME, "rb");

if (fp == NULL)

{ printf("Error opening file %s/n", FNAME);

exit(1);

}

word = getw(fp);

if (ferror(fp))

printf("Error reading file/n");

else

printf("Successful read: word = %d/n", word);

fclose(fp);

unlink(FNAME); return 0;

}字母Q開頭函數函數名: qsort

功 能: 使用快速排序例程進行排序

用 法: void qsort( void *base, int nelem, int width,

int (*fcmp)() );

程式例:#include <stdio.h>

#include <stdlib.h>

#include <string.h>int sort_function( const void *a, const void *b);char list[5][4] = { "cat", "car", "cab", "cap", "can" };

int main(void)

{

int x; qsort((void *)list, 5, sizeof(list[0]), sort_function);

for (x = 0; x < 5; x++)

printf("%s/n", list[x]);

return 0;

}int sort_function( const void *a, const void *b)

{

return( strcmp(a,b) );

}字母R開頭函數函數名: raise

功 能: 向正在執行的程式發送一個信号

用 法: int raise(int sig);

程式例:#include <signal.h>int main(void)

{

int a, b; a = 10;

b = 0; if (b == 0)

raise(SIGFPE);

a = a / b;

return 0;

}

函數名: rand

功 能: 随機數發生器

用 法: void rand(void);

程式例:#include <stdlib.h>

#include <stdio.h>int main(void)

{

int i; printf("Ten random numbers from 0 to 99/n/n"); for(i=0; i<10; i++)

printf("%d/n", rand() % 100);

return 0;

}

函數名: randbrd

功 能: 随機塊讀

用 法: int randbrd(struct fcb *fcbptr, int reccnt);

程式例:#include <process.h>

#include <string.h>

#include <stdio.h>

#include <dos.h>int main(void)

{

char far *save_dta;

char line[80], buffer[256];

struct fcb blk;

int i, result;

printf("Enter drive and file name (no path - i.e. /

a:file.dat)/n");

gets(line);

if (!parsfnm(line, &blk, 1))

{

printf("Error in call to parsfnm/n");

exit(1);

}

printf("Drive #%d File: %s/n/n",

blk.fcb_drive, blk.fcb_name);

bdosptr(0x0F, &blk, 0);

save_dta = getdta();

setdta(buffer);

blk.fcb_recsize = 128;

blk.fcb_random = 0L;

result = randbrd(&blk, 1);

if (!result)

printf("Read OK/n/n"); else

{

perror("Error during read");

exit(1);

}

printf("The first 128 characters are:/n");

for (i=0; i<128; i++)

putchar(buffer[i]);

setdta(save_dta); return 0;

}

函數名: randbwr

功 能: 随機塊寫

用 法: int randbwr(struct fcp *fcbptr, int reccnt);

程式例:#include <process.h>

#include <string.h>

#include <stdio.h>

#include <dos.h>int main(void)

{

char far *save_dta;

char line[80];

char buffer[256] = "RANDBWR test!";

struct fcb blk;

int result;

printf("Enter a file name to create (no path - ie./

a:file.dat/n");

gets(line);

parsfnm(line,&blk,1);

printf("Drive #%d File: %s/n",

blk.fcb_drive, blk.fcb_name);

if (bdosptr(0x16, &blk, 0) == -1)

{

perror("Error creating file");

exit(1);

}

save_dta = getdta();

setdta(buffer);

blk.fcb_recsize = 256;

blk.fcb_random = 0L;

result = randbwr(&blk, 1); if (!result)

printf("Write OK/n"); else

{

perror("Disk error");

exit(1);

}

if (bdosptr(0x10, &blk, 0) == -1)

{ perror("Error closing file");

exit(1);

}

setdta(save_dta); return 0;

}

函數名: random

功 能: 随機數發生器

用 法: int random(int num);

程式例:#include <stdlib.h>

#include <stdio.h>

#include <time.h>

int main(void)

{

randomize(); printf("Random number in the 0-99 range: %d/n",

random (100));

return 0;

}

函數名: randomize

功 能: 初始化随機數發生器

用 法: void randomize(void);

程式例:#include <stdlib.h>

#include <stdio.h>

#include <time.h>int main(void)

{

int i;

randomize();

printf("Ten random numbers from 0 to 99/n/n");

for(i=0; i<10; i++)

printf("%d/n", rand() % 100);

return 0;

}

函數名: read

功 能: 從檔案中讀

用 法: int read(int handle, void *buf, int nbyte);

程式例:#include <stdio.h>

#include <io.h>

#include <alloc.h>

#include <fcntl.h>

#include <process.h>

#include <sys/stat.h>int main(void)

{

void *buf;

int handle, bytes; buf = malloc(10); if ((handle =

open("TEST.$$$",O_RDONLY|O_BINARY,S_IWRITE|S_IREAD))==-1)

{

printf("Error Opening File/n");

exit(1);

} if ((bytes = read(handle, buf, 10)) == -1) {

printf("Read Failed./n");

exit(1);

} else {

printf("Read: %d bytes read./n", bytes);

}

return 0;

}

函數名: realloc

功 能: 重新配置設定主存

用 法: void *realloc(void *ptr, unsigned newsize);

程式例:#include <stdio.h>

#include <alloc.h>

#include <string.h>int main(void)

{

char *str;

str = malloc(10);

strcpy(str, "Hello"); printf("String is %s/n Address is %p/n", str, str);

str = realloc(str, 20);

printf("String is %s/n New address is %p/n", str, str);

free(str); return 0;

}

函數名: rectangle

功 能: 畫一個矩形

用 法: void far rectangle( int left, int top, int right,

int bottom );

程式例:#include <graphics.h>

#include <stdlib.h>

#include <stdio.h>

#include <conio.h>int main(void)

{

int gdriver = DETECT, gmode, errorcode;

int left, top, right, bottom;

initgraph(&gdriver, &gmode, "");

errorcode = graphresult();

if (errorcode != grOk)

{

printf("Graphics error: %s/n",

grapherrormsg(errorcode)); printf("Press any key to halt:");

getch();

exit(1);

} left = getmaxx() / 2 - 50;

top = getmaxy() / 2 - 50;

right = getmaxx() / 2 + 50;

bottom = getmaxy() / 2 + 50;

rectangle(left,top,right,bottom);

getch();

closegraph();

return 0;

}

函數名: registerbgidriver

功 能: 登入已連接配接進來的圖形驅動程式代碼

用 法: int registerbgidriver(void(*driver)(void));

程式例:#include <graphics.h>

#include <stdlib.h>

#include <stdio.h>

#include <conio.h>int main(void)

{

int gdriver = DETECT, gmode, errorcode;

errorcode = registerbgidriver(EGAVGA_driver);

if (errorcode < 0)

{

printf("Graphics error: %s/n",

grapherrormsg(errorcode));

printf("Press any key to halt:"); getch();

exit(1);

}

initgraph(&gdriver, &gmode, "");

errorcode = graphresult();

if (errorcode != grOk)

{

printf("Graphics error: %s/n",

grapherrormsg(errorcode)); printf("Press any key to halt:");

getch();

exit(1);

}

line(0, 0, getmaxx(), getmaxy());

getch();

closegraph();

return 0;

}

函數名: remove

功 能: 删除一個檔案

用 法: int remove(char *filename);

程式例:#include <stdio.h>int main(void)

{

char file[80];

printf("File to delete: ");

gets(file);

if (remove(file) == 0)

printf("Removed %s./n",file);

else

perror("remove"); return 0;

}

函數名: rename

功 能: 重命名檔案

用 法: int rename(char *oldname, char *newname);

程式例:#include <stdio.h>int main(void)

{

char oldname[80], newname[80];

printf("File to rename: ");

gets(oldname); printf("New name: ");

gets(newname);

if (rename(oldname, newname) == 0)

printf("Renamed %s to %s./n", oldname, newname);

else

perror("rename"); return 0;

}

函數名: restorecrtmode

功 能: 将螢幕模式恢複為先前的imitgraph設定

用 法: void far restorecrtmode(void);

程式例:#include <graphics.h>

#include <stdlib.h>

#include <stdio.h>

#include <conio.h>int main(void)

{

int gdriver = DETECT, gmode, errorcode;

int x, y;

initgraph(&gdriver, &gmode, "");

errorcode = graphresult();

if (errorcode != grOk)

{

printf("Graphics error: %s/n",

grapherrormsg(errorcode)); printf("Press any key to halt:");

getch();

exit(1);

} x = getmaxx() / 2;

y = getmaxy() / 2;

settextjustify(CENTER_TEXT, CENTER_TEXT);

outtextxy(x, y, "Press any key to exit graphics:");

getch();

restorecrtmode();

printf("We're now in text mode./n");

printf("Press any key to return to graphics mode:");

getch();

setgraphmode(getgraphmode());

settextjustify(CENTER_TEXT, CENTER_TEXT);

outtextxy(x,y,"We're back in graphics mode.");

outtextxy(x,y+textheight("W"),"Press any key to halt:");

getch();

closegraph();

return 0;

}

函數名: rewind

功 能: 将檔案指針重新指向一個流的開頭

用 法: int rewind(FILE *stream);

程式例:#include <stdio.h>

#include <dir.h> int main(void)

{

FILE *fp;

char *fname = "TXXXXXX", *newname, first; newname = mktemp(fname);

fp = fopen(newname,"w+");

fprintf(fp,"abcdefghijklmnopqrstuvwxyz");

rewind(fp);

fscanf(fp,"%c",&first);

printf("The first character is: %c/n",first);

fclose(fp);

remove(newname); return 0;

}

函數名: rmdir

功 能: 删除DOS檔案目錄

用 法: int rmdir(char *stream);

程式例:#include <stdio.h>

#include <conio.h>

#include <process.h>

#include <dir.h>#define DIRNAME "testdir.$$$"int main(void)

{

int stat; stat = mkdir(DIRNAME);

if (!stat)

printf("Directory created/n");

else

{

printf("Unable to create directory/n");

exit(1);

}

getch();

system("dir/p");

getch(); stat = rmdir(DIRNAME);

if (!stat)

printf("/nDirectory deleted/n");

else

{

perror("/nUnable to delete directory/n");

exit(1);

} return 0;

}字母S開頭函數函數名: sbrk

功 能: 改變資料段空間位置

用 法: char *sbrk(int incr);

程式例:#include <stdio.h>

#include <alloc.h>int main(void)

{

printf("Changing allocation with sbrk()/n");

printf("Before sbrk() call: %lu bytes free/n",

(unsigned long) coreleft());

sbrk(1000); printf(" After sbrk() call: %lu bytes free/n",

(unsigned long) coreleft());

return 0;

}

函數名: scanf

功 能: 執行格式化輸入

用 法: int scanf(char *format[,argument,...]);

程式例:#include <stdio.h>

#include <conio.h>int main(void)

{

char label[20];

char name[20];

int entries = 0;

int loop, age; double salary; struct Entry_struct

{

char name[20];

int age;

float salary;

} entry[20];

printf("/n/nPlease enter a label for the chart: ");

scanf("%20s", label);

fflush(stdin);

printf("How many entries will there be? (less than 20) ");

scanf("%d", &entries);

fflush(stdin);

for (loop=0;loop<entries;++loop)

{

printf("Entry %d/n", loop);

printf(" Name : "); scanf("%[A-Za-z]", entry[loop].name);

fflush(stdin);

printf(" Age : ");

scanf("%d", &entry[loop].age);

fflush(stdin);

printf(" Salary : ");

scanf("%f", &entry[loop].salary);

fflush(stdin);

}

printf("/nPlease enter your name, age and salary/n");

scanf("%20s %d %lf", name, &age, &salary);

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

printf("Compiled by %s age %d $%15.2lf/n",

name, age, salary); printf("----------------------------------------------/

-------/n");

for (loop=0;loop<entries;++loop)

printf("%4d | %-20s | %5d | %15.2lf/n",

loop + 1,

entry[loop].name,

entry[loop].age,

entry[loop].salary);

printf("-----------------------------------------------/

------/n");

return 0;

}

函數名: searchpath

功 能: 搜尋DOS路徑

用 法: char *searchpath(char *filename);

程式例:#include <stdio.h>

#include <dir.h>int main(void)

{

char *p; p = searchpath("TLINK.EXE");

printf("Search for TLINK.EXE : %s/n", p);

p = searchpath("NOTEXIST.FIL");

printf("Search for NOTEXIST.FIL : %s/n", p); return 0;

}

函數名: sector

功 能: 畫并填充橢圓扇區

用 法: void far sector( int x, int y, int stangle,

int endangle );

程式例:#include <graphics.h>

#include <stdlib.h>

#include <stdio.h>

#include <conio.h>int main(void)

{

int gdriver = DETECT, gmode, errorcode;

int midx, midy, i;

int stangle = 45, endangle = 135;

int xrad = 100, yrad = 50;

initgraph(&gdriver, &gmode, "");

errorcode = graphresult();

if (errorcode != grOk)

{

printf("Graphics error: %s/n",

grapherrormsg(errorcode));

printf("Press any key to halt:");

getch();

exit(1);

} midx = getmaxx() / 2;

midy = getmaxy() / 2;

for (i=EMPTY_FILL; i<USER_FILL; i++)

{

setfillstyle(i, getmaxcolor());

sector(midx, midy, stangle, endangle, xrad, yrad); getch();

}

closegraph();

return 0;

}

函數名: segread

功 能: 讀段寄存器值

用 法: void segread(struct SREGS *segtbl);

程式例:#include <stdio.h>

#include <dos.h>int main(void)

{

struct SREGS segs; segread(&segs);

printf("Current segment register settings/n/n"); printf("CS: %X DS: %X/n", segs.cs, segs.ds);

printf("ES: %X SS: %X/n", segs.es, segs.ss); return 0;

}

函數名: setactivepage

功 能: 設定圖形輸出活動頁

用 法: void far setactivepage(int pagenum);

程式例:#include <graphics.h>

#include <stdlib.h>

#include <stdio.h>

#include <conio.h>int main(void)

{

int gdriver = EGA, gmode = EGAHI, errorcode;

int x, y, ht;

initgraph(&gdriver, &gmode, "");

errorcode = graphresult(); if (errorcode != grOk)

{

printf("Graphics error: %s/n",

grapherrormsg(errorcode));

printf("Press any key to halt:");

getch();

exit(1);

} x = getmaxx() / 2;

y = getmaxy() / 2;

ht = textheight("W");

setactivepage(1);

line(0, 0, getmaxx(), getmaxy());

settextjustify(CENTER_TEXT, CENTER_TEXT);

outtextxy(x, y, "This is page #1:");

outtextxy(x, y+ht, "Press any key to halt:");

setactivepage(0);

outtextxy(x, y, "This is page #0.");

outtextxy(x, y+ht, "Press any key to view page #1:");

getch();

setvisualpage(1);

getch();

closegraph();

return 0;

}

函數名: setallpallette

功 能: 按指定方式改變所有的調色闆顔色

用 法: void far setallpallette

( struct palette, far *pallette );

程式例:#include <graphics.h>

#include <stdlib.h>

#include <stdio.h>

#include <conio.h>int main(void)

{

int gdriver = DETECT, gmode, errorcode;

struct palettetype pal;

int color, maxcolor, ht;

int y = 10;

char msg[80];

initgraph(&gdriver, &gmode, "");

errorcode = graphresult();

if (errorcode != grOk)

{

printf("Graphics error: %s/n",

grapherrormsg(errorcode));

printf("Press any key to halt:");

getch();

exit(1);

} maxcolor = getmaxcolor();

ht = 2 * textheight("W");

getpalette(&pal);

for (color=1; color<=maxcolor; color++)

{

setcolor(color);

sprintf(msg, "Color: %d", color);

outtextxy(1, y, msg);

y += ht;

}

getch();

for (color=1; color<=maxcolor; color++)

{

setpalette(color, BLACK);

getch();

}

setallpalette(&pal);

getch();

closegraph();

return 0;

}

函數名: setaspectratio

功 能: 設定圖形縱橫比

用 法: void far setaspectratio(int xasp, int yasp);

程式例:#include <graphics.h>

#include <stdlib.h>

#include <stdio.h>

#include <conio.h>int main(void)

{

int gdriver = DETECT, gmode, errorcode;

int xasp, yasp, midx, midy;

initgraph(&gdriver, &gmode, "");

errorcode = graphresult();

if (errorcode != grOk)

{

printf("Graphics error: %s/n",

grapherrormsg(errorcode)); printf("Press any key to halt:");

getch();

exit(1);

} midx = getmaxx() / 2;

midy = getmaxy() / 2;

setcolor(getmaxcolor());

getaspectratio(&xasp, &yasp);

circle(midx, midy, 100);

getch();

cleardevice();

setaspectratio(xasp/2, yasp);

circle(midx, midy, 100);

getch();

cleardevice();

setaspectratio(xasp, yasp/2);

circle(midx, midy, 100);

getch();

closegraph();

return 0;

}

函數名: setbkcolor

功 能: 用調色闆設定目前背景顔色

用 法: void far setbkcolor(int color);

程式例:#include <graphics.h>

#include <stdlib.h>

#include <stdio.h>

#include <conio.h>int main(void)

{

int gdriver = EGA, gmode = EGAHI, errorcode;

int bkcol, maxcolor, x, y;

char msg[80];

initgraph(&gdriver, &gmode, "");

errorcode = graphresult();

if (errorcode != grOk)

{

printf("Graphics error: %s/n",

grapherrormsg(errorcode)); printf("Press any key to halt:");

getch();

exit(1);

}

maxcolor = getmaxcolor();

settextjustify(CENTER_TEXT, CENTER_TEXT);

x = getmaxx() / 2;

y = getmaxy() / 2;

for (bkcol=0; bkcol<=maxcolor; bkcol++)

{

cleardevice();

setbkcolor(bkcol);

if (bkcol == WHITE)

setcolor(EGA_BLUE);

sprintf(msg, "Background color: %d", bkcol);

outtextxy(x, y, msg); getch();

}

closegraph();

return 0;

}

函數名: setblock

功 能: 修改先前已配置設定的DOS存儲段大小

用 法: int setblock(int seg, int newsize);

程式例:#include <dos.h>

#include <alloc.h>

#include <stdio.h>

#include <stdlib.h>int main(void)

{

unsigned int size, segp;

int stat; size = 64;

stat = allocmem(size, &segp);

if (stat == -1)

printf("Allocated memory at segment: %X/n", segp);

else

{

printf("Failed: maximum number of paragraphs available/

is %d/n", stat);

exit(1);

} stat = setblock(segp, size * 2);

if (stat == -1)

printf("Expanded memory block at segment: %X/n", segp); else

printf("Failed: maximum number of paragraphs/

available is %d/n", stat); freemem(segp); return 0;

}

函數名: setbuf

功 能: 把緩沖區與流相聯

用 法: void setbuf(FILE *steam, char *buf);

程式例:#include <stdio.h>

char outbuf[BUFSIZ];int main(void)

{

setbuf(stdout, outbuf);

puts("This is a test of buffered output./n/n");

puts("This output will go into outbuf/n");

puts("and won't appear until the buffer/n");

puts("fills up or we flush the stream./n");

fflush(stdout); return 0;

}

函數名: setcbrk

功 能: 設定Control-break

用 法: int setcbrk(int value);

程式例:#include <dos.h>

#include <conio.h>

#include <stdio.h>int main(void)

{

int break_flag; printf("Enter 0 to turn control break off/n"); printf("Enter 1 to turn control break on/n"); break_flag = getch() - 0; setcbrk(break_flag); if (getcbrk())

printf("Cntrl-brk flag is on/n");

else

printf("Cntrl-brk flag is off/n");

return 0;

}

函數名: setcolor

功 能: 設定目前畫線顔色

用 法: void far setcolor(int color);

程式例:#include <graphics.h>

#include <stdlib.h>

#include <stdio.h>

#include <conio.h>int main(void)

{

int gdriver = EGA, gmode = EGAHI, errorcode;

int color, maxcolor, x, y;

char msg[80];

initgraph(&gdriver, &gmode, "");

errorcode = graphresult();

if (errorcode != grOk)

{

printf("Graphics error: %s/n",

grapherrormsg(errorcode)); printf("Press any key to halt:");

getch();

exit(1);

}

maxcolor = getmaxcolor();

settextjustify(CENTER_TEXT, CENTER_TEXT);

x = getmaxx() / 2;

y = getmaxy() / 2;

for (color=1; color<=maxcolor; color++)

{

cleardevice();

setcolor(color);

sprintf(msg, "Color: %d", color); outtextxy(x, y, msg);

getch();

}

closegraph();

return 0;

}

函數名: setdate

功 能: 設定DOS日期

用 法: void setdate(struct date *dateblk);

程式例:#include <stdio.h>

#include <process.h>

#include <dos.h>int main(void)

{

struct date reset;

struct date save_date;

getdate(&save_date);

printf("Original date:/n");

system("date"); reset.da_year = 2001;

reset.da_day = 1;

reset.da_mon = 1;

setdate(&reset); printf("Date after setting:/n");

system("date"); setdate(&save_date);

printf("Back to original date:/n"); system("date"); return 0;

}

函數名: setdisk

功 能: 設定目前磁盤驅動器

用 法: int setdisk(int drive);

程式例:#include <stdio.h>

#include <dir.h>int main(void)

{

int save, disk, disks;

save = getdisk();

disks = setdisk(save);

printf("%d logical drives on the system/n/n", disks);

printf("Available drives:/n");

for (disk = 0;disk < 26;++disk)

{

setdisk(disk);

if (disk == getdisk())

printf("%c: drive is available/n", disk + 'a');

}

setdisk(save);

return 0;

}

函數名: setdta

功 能: 設定磁盤傳輸區位址

用 法: void setdta(char far *dta);

程式例:#include <process.h>

#include <string.h>

#include <stdio.h>

#include <dos.h>int main(void)

{

char line[80], far *save_dta;

char buffer[256] = "SETDTA test!"; struct fcb blk;

int result;

printf("Enter a file name to create:");

gets(line);

parsfnm(line, &blk, 1);

printf("%d %s/n", blk.fcb_drive, blk.fcb_name); if (bdosptr(0x16, &blk, 0) == -1)

{

perror("Error creating file");

exit(1);

}

save_dta = getdta();

setdta(buffer);

blk.fcb_recsize = 256;

blk.fcb_random = 0L; result = randbwr(&blk, 1);

printf("result = %d/n", result); if (!result)

printf("Write OK/n");

else

{

perror("Disk error");

exit(1);

}

if (bdosptr(0x10, &blk, 0) == -1)

{ perror("Error closing file");

exit(1);

}

setdta(save_dta);

return 0;

}

函數名: setfillpattern

功 能: 選擇使用者定義的填充模式

用 法: void far setfillpattern( char far *upattern,

int color );

程式例:#include <graphics.h>

#include <stdlib.h>

#include <stdio.h>

#include <conio.h>int main(void)

{

int gdriver = DETECT, gmode, errorcode;

int maxx, maxy;

char pattern[8] = { 0x00, 0x70, 0x20, 0x27, 0x24, 0x24,

0x07, 0x00 };

initgraph(&gdriver, &gmode, "");

errorcode = graphresult();

if (errorcode != grOk) {

printf("Graphics error: %s/n",

grapherrormsg(errorcode));

printf("Press any key to halt:");

getch();

exit(1);

} maxx = getmaxx();

maxy = getmaxy();

setcolor(getmaxcolor());

setfillpattern(pattern, getmaxcolor());

bar(0, 0, maxx, maxy);

getch();

closegraph();

return 0;

}

函數名: setfillstyle

功 能: 設定填充模式和顔色

用 法: void far setfillstyle(int pattern, int color);

程式例:#include <graphics.h>

#include <stdlib.h>

#include <string.h>

#include <stdio.h>

#include <conio.h>

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)

{

int gdriver = DETECT, gmode, errorcode;

int style, midx, midy;

char stylestr[40];

initgraph(&gdriver, &gmode, "");

errorcode = graphresult();

if (errorcode != grOk)

{ printf("Graphics error: %s/n",

grapherrormsg(errorcode));

printf("Press any key to halt:");

getch();

exit(1);

} midx = getmaxx() / 2;

midy = getmaxy() / 2; for (style = EMPTY_FILL; style < USER_FILL; style++)

{

setfillstyle(style, getmaxcolor());

strcpy(stylestr, fname[style]);

bar3d(0, 0, midx-10, midy, 0, 0);

outtextxy(midx, midy, stylestr);

getch();

cleardevice();

}

getch();

closegraph();

return 0;

}

函數名: setftime

功 能: 設定檔案日期和時間

用 法: int setftime(int handle, struct ftime *ftimep);

程式例:#include <stdio.h>

#include <process.h>

#include <fcntl.h>

#include <io.h>int main(void)

{

struct ftime filet;

FILE *fp; if ((fp = fopen("TEST.$$$", "w")) == NULL)

{

perror("Error:");

exit(1);

} fprintf(fp, "testing.../n");

filet.ft_tsec = 1;

filet.ft_min = 1;

filet.ft_hour = 1;

filet.ft_day = 1;

filet.ft_month = 1; filet.ft_year = 21;

system("dir TEST.$$$");

setftime(fileno(fp), &filet);

fclose(fp); system("dir TEST.$$$"); unlink("TEST.$$$"); return 0;

}

函數名: setgraphbufsize

功 能: 改變内部圖形緩沖區的大小

用 法: unsigned far setgraphbufsize(unsigned bufsize);

程式例:#include <graphics.h>

#include <stdlib.h>

#include <stdio.h>

#include <conio.h>#define BUFSIZE 1000 int main(void)

{

int gdriver = DETECT, gmode, errorcode;

int x, y, oldsize;

char msg[80];

oldsize = setgraphbufsize(BUFSIZE);

initgraph(&gdriver, &gmode, "");

errorcode = graphresult();

if (errorcode != grOk)

{

printf("Graphics error: %s/n",

grapherrormsg(errorcode));

printf("Press any key to halt:");

getch();

exit(1);

} x = getmaxx() / 2;

y = getmaxy() / 2;

sprintf(msg, "Graphics buffer size: %d", BUFSIZE);

settextjustify(CENTER_TEXT, CENTER_TEXT);

outtextxy(x, y, msg);

sprintf(msg, "Old graphics buffer size: %d", oldsize);

outtextxy(x, y+textheight("W"), msg);

getch();

closegraph();

return 0;

}

函數名: setgraphmode

功 能: 将系統設定成圖形模式且清屏

用 法: void far setgraphmode(int mode);

程式例:#include <graphics.h>

#include <stdlib.h>

#include <stdio.h>

#include <conio.h>int main(void)

{

int gdriver = DETECT, gmode, errorcode; int x, y;

initgraph(&gdriver, &gmode, "");

errorcode = graphresult();

if (errorcode != grOk)

{

printf("Graphics error: %s/n",

grapherrormsg(errorcode));

printf("Press any key to halt:"); getch();

exit(1);

} x = getmaxx() / 2;

y = getmaxy() / 2;

settextjustify(CENTER_TEXT, CENTER_TEXT);

outtextxy(x, y, "Press any key to exit graphics:");

getch();

restorecrtmode();

printf("We're now in text mode./n");

printf("Press any key to return to graphics mode:");

getch();

setgraphmode(getgraphmode());

settextjustify(CENTER_TEXT, CENTER_TEXT);

outtextxy(x, y, "We're back in graphics mode.");

outtextxy(x,y+textheight("W"),"Press any key to halt:");

getch();

closegraph();

return 0;

}

函數名: setjmp

功 能: 非局部轉移

用 法: int setjmp(jmp_buf env);

程式例:#include <stdio.h>

#include <process.h>

#include <setjmp.h>void subroutine(void);jmp_buf jumper;int main(void)

{

int value; value = setjmp(jumper);

if (value != 0)

{

printf("Longjmp with value %d/n", value);

exit(value);

}

printf("About to call subroutine ... /n");

subroutine();

return 0;

}void subroutine(void)

{

longjmp(jumper,1);

}

函數名: setlinestyle

功 能: 設定目前畫線寬度和類型

用 法: void far setlinestyle( int linestype,

unsigned upattern );

程式例:#include <graphics.h>

#include <stdlib.h>

#include <string.h>

#include <stdio.h>

#include <conio.h>

char *lname[] = {

"SOLID_LINE",

"DOTTED_LINE",

"CENTER_LINE",

"DASHED_LINE",

"USERBIT_LINE"

};int main(void)

{

int gdriver = DETECT, gmode, errorcode;

int style, midx, midy, userpat;

char stylestr[40];

initgraph(&gdriver, &gmode, "");

errorcode = graphresult();

if (errorcode != grOk)

{

printf("Graphics error: %s/n",

grapherrormsg(errorcode));

printf("Press any key to halt:"); getch();

exit(1);

} midx = getmaxx() / 2;

midy = getmaxy() / 2;

userpat = 1; for (style=SOLID_LINE; style<=USERBIT_LINE; style++)

{

setlinestyle(style, userpat, 1);

strcpy(stylestr, lname[style]);

line(0, 0, midx-10, midy);

rectangle(0, 0, getmaxx(), getmaxy());

outtextxy(midx, midy, stylestr);

getch();

cleardevice();

}

closegraph();

return 0;

}

函數名: setmem

功 能: 存值到存儲區

用 法: void setmem(void *addr, int len, char value);

程式例:#include <stdio.h>

#include <alloc.h>

#include <mem.h>int main(void)

{

char *dest;

dest = calloc(21, sizeof(char));

setmem(dest, 20, 'c');

printf("%s/n", dest); return 0;

}

函數名: setmode

功 能: 設定打開檔案方式

用 法: int setmode(int handle, unsigned mode);

程式例:

#include <stdio.h>

#include <fcntl.h>

#include <io.h>int main(void)

{

int result; result = setmode(fileno(stdprn), O_TEXT); if (result == -1)

perror("Mode not available/n");

else

printf("Mode successfully switched/n");

return 0;

}

函數名: setpalette

功 能: 改變調色闆的顔色

用 法: void far setpalette(int index, int actural_color);

程式例:#include <graphics.h>

#include <stdlib.h>

#include <stdio.h>

#include <conio.h>int main(void)

{

int gdriver = DETECT, gmode, errorcode;

int color, maxcolor, ht;

int y = 10;

char msg[80];

initgraph(&gdriver, &gmode, "");

errorcode = graphresult();

if (errorcode != grOk)

{ printf("Graphics error: %s/n",

grapherrormsg(errorcode));

printf("Press any key to halt:");

getch();

exit(1);

} maxcolor = getmaxcolor();

ht = 2 * textheight("W"); for (color=1; color<=maxcolor; color++)

{

setcolor(color);

sprintf(msg, "Color: %d", color);

outtextxy(1, y, msg);

y += ht;

}

getch();

for (color=1; color<=maxcolor; color++)

{ setpalette(color, BLACK);

getch();

}

closegraph();

return 0;

}

函數名: setrgbpalette

功 能: 定義IBM8514圖形卡的顔色

用 法: void far setrgbpalette( int colornum, int red,

int green, int blue );

程式例:#include <graphics.h>

#include <stdlib.h>

#include <stdio.h>

#include <conio.h>int main(void)

{

int gdriver = VGA, gmode = VGAHI, errorcode;

struct palettetype pal;

int i, ht, y, xmax;

initgraph(&gdriver, &gmode, "");

errorcode = graphresult();

if (errorcode != grOk)

{ printf("Graphics error: %s/n",

grapherrormsg(errorcode));

printf("Press any key to halt:");

getch();

exit(1);

}

getpalette(&pal);

for (i=0; i<pal.size; i++)

setrgbpalette(pal.colors[i], i*4, i*4, i*4);

ht = getmaxy() / 16;

xmax = getmaxx();

y = 0;

for (i=0; i<pal.size; i++)

{

setfillstyle(SOLID_FILL, i);

bar(0, y, xmax, y+ht);

y += ht;

}

getch();

closegraph();

return 0;

}

函數名: settextjustify

功 能: 為圖形函數設定文本的對齊方式

用 法: void far settextjustify(int horiz, int vert);

程式例:#include <graphics.h>

#include <stdlib.h>

#include <stdio.h>

#include <conio.h>

void xat(int x, int y);

char *hjust[] = { "LEFT_TEXT",

"CENTER_TEXT",

"RIGHT_TEXT"

};

char *vjust[] = { "LEFT_TEXT",

"CENTER_TEXT",

"RIGHT_TEXT"

};int main(void)

{

int gdriver = DETECT, gmode, errorcode;

int midx, midy, hj, vj;

char msg[80];

initgraph(&gdriver, &gmode, "");

errorcode = graphresult();

if (errorcode != grOk)

{ printf("Graphics error: %s/n",

grapherrormsg(errorcode));

printf("Press any key to halt:");

getch();

exit(1);

} midx = getmaxx() / 2;

midy = getmaxy() / 2;

for (hj=LEFT_TEXT; hj<=RIGHT_TEXT; hj++)

for (vj=LEFT_TEXT; vj<=RIGHT_TEXT; vj++) {

cleardevice();

settextjustify(hj, vj);

sprintf(msg, "%s %s", hjust[hj], vjust[vj]);

xat(midx, midy);

outtextxy(midx, midy, msg);

getch();

}

closegraph();

return 0;

}

void xat(int x, int y)

{

line(x-4, y, x+4, y);

line(x, y-4, x, y+4);

}

函數名: settextstyle

功 能: 為圖形輸出設定目前的文本屬性

用 法: void far settextstyle ( int font, int direction,

char size );

程式例:#include <graphics.h>

#include <stdlib.h>

#include <stdio.h>

#include <conio.h>

char *fname[] = { "DEFAULT font",

"TRIPLEX font", "SMALL font",

"SANS SERIF font",

"GOTHIC font"

};int main(void)

{

int gdriver = DETECT, gmode, errorcode;

int style, midx, midy;

int size = 1;

initgraph(&gdriver, &gmode, "");

errorcode = graphresult();

if (errorcode != grOk)

{

printf("Graphics error: %s/n",

grapherrormsg(errorcode));

printf("Press any key to halt:");

getch();

exit(1);

} midx = getmaxx() / 2;

midy = getmaxy() / 2;

settextjustify(CENTER_TEXT, CENTER_TEXT);

for (style=DEFAULT_FONT; style<=GOTHIC_FONT; style++)

{

cleardevice();

if (style == TRIPLEX_FONT)

size = 4;

settextstyle(style, HORIZ_DIR, size);

outtextxy(midx, midy, fname[style]);

getch();

}

closegraph();

return 0;

}

函數名: settime

功 能: 設定系統時間

用 法: void settime(struct time *timep);

程式例:#include <stdio.h>

#include <dos.h>int main(void)

{

struct time t; gettime(&t);

printf("The current minute is: %d/n", t.ti_min); printf("The current hour is: %d/n", t.ti_hour);

printf("The current hundredth of a second is: %d/n",

t.ti_hund);

printf("The current second is: %d/n", t.ti_sec);

t.ti_min++;

settime(&t); return 0;

}

函數名: setusercharsize

功 能: 為矢量字型改變字元寬度和高度

用 法: void far setusercharsize( int multx, int dirx,

int multy, int diry );

程式例:#include <graphics.h>

#include <stdlib.h>

#include <stdio.h>

#include <conio.h>int main(void)

{

int gdriver = DETECT, gmode, errorcode;

initgraph(&gdriver, &gmode, "");

errorcode = graphresult();

if (errorcode != grOk)

{

printf("Graphics error: %s/n",

grapherrormsg(errorcode)); printf("Press any key to halt:");

getch();

exit(1);

}

settextstyle(TRIPLEX_FONT, HORIZ_DIR, 4);

moveto(0, getmaxy() / 2);

outtext("Norm ");

setusercharsize(1, 3, 1, 1);

outtext("Short ");

setusercharsize(3, 1, 1, 1);

outtext("Wide");

getch();

closegraph();

return 0;

}

函數名: setvbuf

功 能: 把緩沖區與流相關

用 法: int setvbuf( FILE *stream, char *buf, int type,

unsigned size );

程式例:#include <stdio.h>int main(void)

{

FILE *input, *output;

char bufr[512]; input = fopen("file.in", "r+b"); output = fopen("file.out", "w");

if (setvbuf(input, bufr, _IOFBF, 512) != 0)

printf("failed to set up buffer for input file/n");

else

printf("buffer set up for input file/n"); if (setvbuf(output, NULL, _IOLBF, 132) != 0)

printf("failed to set up buffer for output file/n");

else

printf("buffer set up for output file/n");

fclose(input);

fclose(output);

return 0;

}

函數名: setvect

功 能: 設定中斷矢量入口

用 法: void setvect(int intr_num, void interrupt(*isr)());

程式例:#include <stdio.h>

#include <dos.h>

#include <conio.h>#define INTR 0X1C void interrupt ( *oldhandler)(void);int count=0;void interrupt handler(void)

{

count++;

oldhandler();

}int main(void)

{

oldhandler = getvect(INTR);

setvect(INTR, handler);

while (count < 20)

printf("count is %d/n",count);

setvect(INTR, oldhandler); return 0;

}

函數名: setverify

功 能: 設定驗證狀态

用 法: void setverify(int value);

程式例:#include <stdio.h>

#include <conio.h>

#include <dos.h>int main(void)

{

int verify_flag;

printf("Enter 0 to set verify flag off/n");

printf("Enter 1 to set verify flag on/n"); verify_flag = getch() - 0; setverify(verify_flag); if (getverify())

printf("DOS verify flag is on/n");

else

printf("DOS verify flag is off/n"); return 0;

}

函數名: setviewport

功 能: 為圖形輸出設定目前視口

用 法: void far setviewport(int left, int top, int right,

int bottom, int clipflag);

程式例:#include <graphics.h>

#include <stdlib.h>

#include <stdio.h>

#include <conio.h>#define CLIP_ON 1 int main(void)

{

int gdriver = DETECT, gmode, errorcode;

initgraph(&gdriver, &gmode, "");

errorcode = graphresult();

if (errorcode != grOk) {

printf("Graphics error: %s/n",

grapherrormsg(errorcode));

printf("Press any key to halt:");

getch();

exit(1);

} setcolor(getmaxcolor());

outtextxy(0, 0, "* <-- (0, 0) in default viewport");

setviewport(50, 50, getmaxx()-50, getmaxy()-50, CLIP_ON);

outtextxy(0, 0, "* <-- (0, 0) in smaller viewport");

getch();

closegraph();

return 0;

}

函數名: setvisualpage

功 能: 設定可見圖形頁号

用 法: void far setvisualpage(int pagenum);

程式例:

#include <graphics.h>

#include <stdlib.h>

#include <stdio.h>

#include <conio.h>int main(void)

{

int gdriver = EGA, gmode = EGAHI, errorcode; int x, y, ht;

initgraph(&gdriver, &gmode, "");

errorcode = graphresult();

if (errorcode != grOk)

{

printf("Graphics error: %s/n",

grapherrormsg(errorcode));

printf("Press any key to halt:");

getch(); exit(1);

} x = getmaxx() / 2;

y = getmaxy() / 2;

ht = textheight("W");

setactivepage(1);

line(0, 0, getmaxx(), getmaxy());

settextjustify(CENTER_TEXT, CENTER_TEXT);

outtextxy(x, y, "This is page #1:");

outtextxy(x, y+ht, "Press any key to halt:");

setactivepage(0);

outtextxy(x, y, "This is page #0.");

outtextxy(x, y+ht, "Press any key to view page #1:");

getch();

setvisualpage(1);

getch();

closegraph();

return 0;

}

函數名: setwritemode

功 能: 設定圖形方式下畫線的輸出模式

用 法: void far setwritemode(int mode);

程式例:#include <graphics.h>

#include <stdlib.h>

#include <stdio.h>

#include <conio.h>int main()

{

int gdriver = DETECT, gmode, errorcode; int xmax, ymax;

initgraph(&gdriver, &gmode, "");

errorcode = graphresult();

if (errorcode != grOk)

{

printf("Graphics error: %s/n",

grapherrormsg(errorcode));

printf("Press any key to halt:");

getch(); exit(1);

} xmax = getmaxx();

ymax = getmaxy();

setwritemode(XOR_PUT);

line(0, 0, xmax, ymax);

getch();

line(0, 0, xmax, ymax);

getch();

setwritemode(COPY_PUT);

line(0, 0, xmax, ymax);

getch();

closegraph();

return 0;

}

函數名: signal

功 能: 設定某一信号的對應動作

用 法: int signal(int sig, sigfun fname);

程式例:#pragma inline

#include <stdio.h>#include <signal.h>void Catcher(int sig, int type, int *reglist)

{

printf("Caught it!/n");

*(reglist + 8) = 3;

}int main(void)

{

signal(SIGFPE, Catcher);

asm mov ax,07FFFH

asm inc ax

asm into

asm dec ax

asm into

return 0;

}

函數名: sin

功 能: 正弦函數

用 法: double sin(double x);

程式例:#include <stdio.h>

#include <math.h>int main(void)

{

double result, x = 0.5; result = sin(x);

printf("The sin() of %lf is %lf/n", x, result); return 0;

}

函數名: sinh

功 能: 雙曲正弦函數

用 法: double sinh(double x);

程式例:#include <stdio.h>

#include <math.h>int main(void)

{

double result, x = 0.5; result = sinh(x);

printf("The hyperbolic sin() of %lf is %lf/n",x,result); return 0;

}

函數名: sleep

功 能: 執行挂起一段時間

用 法: unsigned sleep(unsigned seconds);

程式例:#include <dos.h>

#include <stdio.h>int main(void)

{

int i;

for (i=1; i<5; i++)

{

printf("Sleeping for %d seconds/n", i);

sleep(i);

}

return 0;

}

函數名: sopen

功 能: 打開一共享檔案

用 法: int sopen( char *pathname, int access,

int shflag, int permiss );

程式例:#include <io.h>

#include <fcntl.h>

#include <sys/stat.h>

#include <process.h>

#include <share.h>

#include <stdio.h>int main(void)

{

int handle;

int status; handle = sopen("c://autoexec.bat",

O_RDONLY, SH_DENYNO, S_IREAD); if (!handle)

{

printf("sopen failed/n");

exit(1);

} status = access("c://autoexec.bat", 6);

if (status == 0)

printf("read/write access allowed/n");

else

printf("read/write access not allowed/n"); close(handle);

return 0;

}

函數名: sound

功 能: 以指定頻率打開PC揚聲器

用 法: void sound(unsigned frequency);

程式例:

#include <dos.h>int main(void)

{

sound(7);

delay(10000);

nosound();

return 0;

}

函數名: spawnl

功 能: 建立并運作子程式

用 法: int spawnl(int mode, char *pathname, char *arg0,

arg1, ... argn, NULL);

程式例:#include <process.h>

#include <stdio.h>

#include <conio.h>int main(void)

{

int result; clrscr();

result = spawnl(P_WAIT, "tcc.exe", NULL);

if (result == -1)

{

perror("Error from spawnl");

exit(1);

}

return 0;

}

函數名: spawnle

功 能: 建立并運作子程式

用 法: int spawnle(int mode, char *pathname, char *arg0,

arg1,..., argn, NULL);

程式例:#include <process.h>

#include <stdio.h>

#include <conio.h>int main(void)

{

int result; clrscr();

result = spawnle(P_WAIT, "tcc.exe", NULL, NULL);

if (result == -1)

{

perror("Error from spawnle");

exit(1);

}

return 0;

}

函數名: sprintf

功 能: 送格式化輸出到字元串中

用 法: int sprintf( char *string,

char *farmat [,argument,...] );

程式例:#include <stdio.h>

#include <math.h>int main(void)

{

char buffer[80];

sprintf(buffer, "An approximation of Pi is %f/n", M_PI);

puts(buffer);

return 0;

}

函數名: sqrt

功 能: 計算平方根

用 法: double sqrt(double x);

程式例:#include <math.h>

#include <stdio.h> int main(void)

{

double x = 4.0, result; result = sqrt(x); printf("The square root of %lf is %lf/n", x, result);

return 0;

}

函數名: srand

功 能: 初始化随機數發生器

用 法: void srand(unsigned seed);

程式例:#include <stdlib.h>

#include <stdio.h>

#include <time.h>int main(void)

{

int i;

time_t t;

srand((unsigned) time(&t));

printf("Ten random numbers from 0 to 99/n/n");

for(i=0; i<10; i++)

printf("%d/n", rand() % 100);

return 0;

}

函數名: sscanf

功 能: 執行從字元串中的格式化輸入

用 法: int sscanf( char *string,

char *format[,argument,...] );

程式例:#include <stdio.h>

#include <conio.h>int main(void)

{

char label[20];

char name[20];

int entries = 0; int loop, age;

double salary; struct Entry_struct

{

char name[20];

int age;

float salary;

} entry[20];

printf("/n/nPlease enter a label for the chart: ");

scanf("%20s", label); fflush(stdin);

printf("How many entries will there be?(less than 20)");

scanf("%d", &entries);

fflush(stdin);

for (loop=0;loop<entries;++loop)

{

printf("Entry %d/n", loop);

printf(" Name : ");

scanf("%[A-Za-z]", entry[loop].name);

fflush(stdin);

printf(" Age : ");

scanf("%d", &entry[loop].age);

fflush(stdin);

printf(" Salary : ");

scanf("%f", &entry[loop].salary);

fflush(stdin);

}

printf("/nPlease enter your name, age and salary/n");

scanf("%20s %d %lf", name, &age, &salary);

printf("/n/nTable %s/n",label); printf("Compiled by %s age %d $%15.2lf/n",

name, age, salary);

printf("-----------------------------------------------/

------/n");

for (loop=0;loop<entries;++loop)

printf("%4d | %-20s | %5d | %15.2lf/n",

loop + 1,

entry[loop].name,

entry[loop].age,

entry[loop].salary);

printf("------------------------------------------------/

-----/n");

return 0;

}

函數名: stat

功 能: 讀取打開檔案資訊

用 法: int stat(char *pathname, struct stat *buff);

程式例:#include <sys/stat.h>

#include <stdio.h>

#include <time.h>#define FILENAME "TEST.$$$"int main(void)

{

struct stat statbuf; FILE *stream;

if ((stream = fopen(FILENAME, "w+")) == NULL)

{

fprintf(stderr, "Cannot open output file./n");

return(1);

}

stat(FILENAME, &statbuf); fclose(stream);

if (statbuf.st_mode & S_IFCHR)

printf("Handle refers to a device./n");

if (statbuf.st_mode & S_IFREG)

printf("Handle refers to an ordinary file./n");

if (statbuf.st_mode & S_IREAD)

printf("User has read permission on file./n");

if (statbuf.st_mode & S_IWRITE)

printf("User has write permission on file./n"); printf("Drive letter of file: %c/n", 'A'+statbuf.st_dev);

printf("Size of file in bytes: %ld/n", statbuf.st_size);

printf("Time file last opened: %s/n",

ctime(&statbuf.st_ctime)); return 0;

}

函數名: _status87

功 能: 取浮點狀态

用 法: unsigned int _status87(void);

程式例:#include <stdio.h>

#include <float.h>int main(void)

{

float x;

double y = 1.5e-100;

printf("Status 87 before error: %x/n", _status87()); x = y;

y = x; printf("Status 87 after error : %x/n", _status87());

return 0;

}

函數名: stime

功 能: 設定時間

用 法: int stime(long *tp);

程式例:#include <stdio.h>

#include <time.h>

#include <dos.h>int main(void)

{

time_t t;

struct tm *area;

t = time(NULL);

area = localtime(&t);

printf("Number of seconds since 1/1/1970 is: %ld/n", t);

printf("Local time is: %s", asctime(area)); t++;

area = localtime(&t);

printf("Add a second: %s", asctime(area)); t += 60;

area = localtime(&t);

printf("Add a minute: %s", asctime(area));

t += 3600;

area = localtime(&t);

printf("Add an hour: %s", asctime(area)); t += 86400L;

area = localtime(&t);

printf("Add a day: %s", asctime(area)); t += 2592000L;

area = localtime(&t);

printf("Add a month: %s", asctime(area)); t += 31536000L;

area = localtime(&t);

printf("Add a year: %s", asctime(area));

return 0;

}

函數名: stpcpy

功 能: 拷貝一個字元串到另一個

用 法: char *stpcpy(char *destin, char *source);

程式例:#include <stdio.h>

#include <string.h>int main(void)

{

char string[10];

char *str1 = "abcdefghi";

stpcpy(string, str1);

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

return 0;

}

函數名: strcat

功 能: 字元串拼接函數

用 法: char *strcat(char *destin, char *source);

程式例:#include <string.h>

#include <stdio.h>int main(void)

{

char destination[25];

char *blank = " ", *c = "C++", *Borland = "Borland";

strcpy(destination, Borland);

strcat(destination, blank);

strcat(destination, c); printf("%s/n", destination);

return 0;

}

函數名: strchr

功 能: 在一個串中查找給定字元的第一個比對之處/

用 法: char *strchr(char *str, char c);

程式例:#include <string.h>

#include <stdio.h>int main(void)

{

char string[15];

char *ptr, c = 'r';

strcpy(string, "This is a string");

ptr = strchr(string, c);

if (ptr)

printf("The character %c is at position: %d/n",

c, ptr-string);

else

printf("The character was not found/n");

return 0;

}

函數名: strcmp

功 能: 串比較

用 法: int strcmp(char *str1, char *str2);

程式例:#include <string.h>

#include <stdio.h>int main(void)

{

char *buf1 = "aaa", *buf2 = "bbb", *buf3 = "ccc";

int ptr;

ptr = strcmp(buf2, buf1);

if (ptr > 0)

printf("buffer 2 is greater than buffer 1/n");

else

printf("buffer 2 is less than buffer 1/n"); ptr = strcmp(buf2, buf3);

if (ptr > 0)

printf("buffer 2 is greater than buffer 3/n");

else

printf("buffer 2 is less than buffer 3/n");

return 0;

}

函數名: strncmpi

功 能: 将一個串中的一部分與另一個串比較, 不管大小寫

用 法: int strncmpi( char *str1, char *str2,

unsigned maxlen );

程式例:#include <string.h>

#include <stdio.h>int main(void)

{

char *buf1 = "BBB", *buf2 = "bbb";

int ptr;

ptr = strcmpi(buf2, buf1); if (ptr > 0)

printf("buffer 2 is greater than buffer 1/n"); if (ptr < 0)

printf("buffer 2 is less than buffer 1/n"); if (ptr == 0)

printf("buffer 2 equals buffer 1/n"); return 0;

}

函數名: strcpy

功 能: 串拷貝

用 法: char *strcpy(char *str1, char *str2);

程式例:#include <stdio.h>

#include <string.h>int main(void)

{

char string[10];

char *str1 = "abcdefghi"; strcpy(string, str1); printf("%s/n", string);

return 0;

}

函數名: strcspn

功 能: 在串中查找第一個給定字元集内容的段

用 法: int strcspn(char *str1, char *str2);

程式例:#include <stdio.h>

#include <string.h>

#include <alloc.h>int main(void)

{

char *string1 = "1234567890";

char *string2 = "747DC8";

int length; length = strcspn(string1, string2);

printf("Character where strings intersect is at /

position %d/n", length); return 0;

}

函數名: strdup

功 能: 将串拷貝到建立的位置處

用 法: char *strdup(char *str);

程式例:#include <stdio.h>

#include <string.h>

#include <alloc.h>int main(void)

{

char *dup_str, *string = "abcde"; dup_str = strdup(string); printf("%s/n", dup_str);

free(dup_str); return 0;

}

函數名: stricmp

功 能: 以大小寫不敏感方式比較兩個串

用 法: int stricmp(char *str1, char *str2);

程式例:#include <string.h>

#include <stdio.h>int main(void)

{

char *buf1 = "BBB", *buf2 = "bbb";

int ptr;

ptr = stricmp(buf2, buf1); if (ptr > 0)

printf("buffer 2 is greater than buffer 1/n"); if (ptr < 0)

printf("buffer 2 is less than buffer 1/n"); if (ptr == 0)

printf("buffer 2 equals buffer 1/n"); return 0;

}

函數名: strerror

功 能: 傳回指向錯誤資訊字元串的指針

用 法: char *strerror(int errnum);

程式例:#include <stdio.h>

#include <errno.h>int main(void)

{ char *buffer;

buffer = strerror(errno);

printf("Error: %s/n", buffer);

return 0;

}

函數名: strcmpi

功 能: 将一個串與另一個比較, 不管大小寫

用 法: int strcmpi(char *str1, char *str2);

程式例:#include <string.h>

#include <stdio.h>int main(void)

{

char *buf1 = "BBB", *buf2 = "bbb";

int ptr;

ptr = strcmpi(buf2, buf1); if (ptr > 0)

printf("buffer 2 is greater than buffer 1/n"); if (ptr < 0)

printf("buffer 2 is less than buffer 1/n"); if (ptr == 0)

printf("buffer 2 equals buffer 1/n"); return 0;

}

函數名: strlen

功 能: 計算串的長度

用 法: unsigned strlen(char *str);

程式例:#include <stdio.h>

#include <string.h>int main(void)

{ char *string = "Borland International"; printf("%d/n", strlen(string));

return 0;

}

函數名: strlwr

功 能: 将串轉換為小寫形式

用 法: char *strlwr(char *str);

程式例:#include <stdio.h>

#include <string.h>int main(void)

{

char *string = "Borland International"; printf("string prior to strlwr: %s/n", string);

strlwr(string); printf("string after strlwr: %s/n", string);

return 0;

}

函數名: strncat

功 能: 串拼接

用 法: char *strncat(char *destin,char *source,int maxlen);

程式例:#include <string.h>

#include <stdio.h>int main(void)

{

char destination[25];

char *source = " States";

strcpy(destination, "United");

strncat(destination, source, 7);

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

return 0;

}

函數名: strncmp

功 能: 串比較

用 法: int strncmp(char *str1, char *str2, int maxlen);

程式例:#include <string.h>

#include <stdio.h>int main(void)

{

char *buf1 = "aaabbb", *buf2 = "bbbccc", *buf3 = "ccc";

int ptr; ptr = strncmp(buf2,buf1,3); if (ptr > 0)

printf("buffer 2 is greater than buffer 1/n");

else

printf("buffer 2 is less than buffer 1/n"); ptr = strncmp(buf2,buf3,3);

if (ptr > 0)

printf("buffer 2 is greater than buffer 3/n");

else

printf("buffer 2 is less than buffer 3/n"); return(0);

}

函數名: strncmpi

功 能: 把串中的一部分與另一串中的一部分比較, 不管大小寫

用 法: int strncmpi(char *str1, char *str2);

程式例:#include <string.h>

#include <stdio.h>int main(void)

{

char *buf1 = "BBBccc", *buf2 = "bbbccc";

int ptr;

ptr = strncmpi(buf2,buf1,3); if (ptr > 0)

printf("buffer 2 is greater than buffer 1/n"); if (ptr < 0)

printf("buffer 2 is less than buffer 1/n"); if (ptr == 0)

printf("buffer 2 equals buffer 1/n"); return 0;

}

函數名: strncpy

功 能: 串拷貝

用 法: char *strncpy( char *destin, char *source,

int maxlen );

程式例:#include <stdio.h>

#include <string.h>int main(void)

{

char string[10];

char *str1 = "abcdefghi";

strncpy(string, str1, 3);

string[3] = '/0';

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

return 0;

}

函數名: strnicmp

功 能: 不注重大小寫地比較兩個串

用 法: int strnicmp(char *str1,char *str2,unsigned maxlen);

程式例:#include <string.h>

#include <stdio.h>int main(void)

{

char *buf1 = "BBBccc", *buf2 = "bbbccc";

int ptr;

ptr = strnicmp(buf2, buf1, 3); if (ptr > 0)

printf("buffer 2 is greater than buffer 1/n"); if (ptr < 0)

printf("buffer 2 is less than buffer 1/n"); if (ptr == 0)

printf("buffer 2 equals buffer 1/n"); return 0;

}

函數名: strnset

功 能: 将一個串中的所有字元都設為指定字元

用 法: char *strnset(char *str, char ch, unsigned n);

程式例:

#include <stdio.h>

#include <string.h>int main(void)

{

char *string = "abcdefghijklmnopqrstuvwxyz";

char letter = 'x';

printf("string before strnset: %s/n", string);

strnset(string, letter, 13);

printf("string after strnset: %s/n", string); return 0;

}

函數名: strpbrk

功 能: 在串中查找給定字元集中的字元

用 法: char *strpbrk(char *str1, char *str2);

程式例:#include <stdio.h>

#include <string.h>int main(void)

{

char *string1 = "abcdefghijklmnopqrstuvwxyz";

char *string2 = "onm";

char *ptr; ptr = strpbrk(string1, string2); if (ptr)

printf("strpbrk found first character: %c/n", *ptr);

else

printf("strpbrk didn't find character in set/n"); return 0;

}

函數名: strrchr

功 能: 在串中查找指定字元的最後一個出現

用 法: char *strrchr(char *str, char c);

程式例:#include <string.h>

#include <stdio.h>int main(void)

{

char string[15];

char *ptr, c = 'r';

strcpy(string, "This is a string");

ptr = strrchr(string, c);

if (ptr)

printf("The character %c is at position: %d/n",

c, ptr-string);

else

printf("The character was not found/n");

return 0;

}

函數名: strrev

功 能: 串倒轉

用 法: char *strrev(char *str);

程式例:#include <string.h>

#include <stdio.h>int main(void)

{

char *forward = "string"; printf("Before strrev(): %s/n", forward);

strrev(forward); printf("After strrev(): %s/n", forward);

return 0;

}

函數名: strset

功 能: 将一個串中的所有字元都設為指定字元

用 法: char *strset(char *str, char c);

程式例:#include <stdio.h>

#include <string.h>int main(void)

{

char string[10] = "123456789";

char symbol = 'c'; printf("Before strset(): %s/n", string); strset(string, symbol);

printf("After strset(): %s/n", string);

return 0;

}

函數名: strspn

功 能: 在串中查找指定字元集的子集的第一次出現

用 法: int strspn(char *str1, char *str2);

程式例:#include <stdio.h>

#include <string.h>

#include <alloc.h>int main(void)

{

char *string1 = "1234567890";

char *string2 = "123DC8";

int length; length = strspn(string1, string2);

printf("Character where strings differ is at position/

%d/n", length);

return 0;

}

函數名: strstr

功 能: 在串中查找指定字元串的第一次出現

用 法: char *strstr(char *str1, char *str2);

程式例:#include <stdio.h>

#include <string.h>int main(void)

{

char *str1="Borland International",*str2="nation",*ptr;

ptr = strstr(str1, str2);

printf("The substring is: %s/n", ptr);

return 0;

}

函數名: strtod

功 能: 将字元串轉換為double型值

用 法: double strtod(char *str, char **endptr);

程式例:#include <stdio.h>

#include <stdlib.h>int main(void)

{

char input[80], *endptr;

double value; printf("Enter a floating point number:"); gets(input);

value = strtod(input, &endptr);

printf("The string is %s the number is %lf/n",input,value);

return 0;

}

函數名: strtok

功 能: 查找由在第二個串中指定的分界符分隔開的單詞

用 法: char *strtok(char *str1, char *str2);

程式例:#include <string.h>

#include <stdio.h>int main(void)

{

char input[16] = "abc,d";

char *p;

p = strtok(input, ",");

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

p = strtok(NULL, ",");

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

return 0;

}

函數名: strtol

功 能: 将串轉換為長整數

用 法: long strtol(char *str, char **endptr, int base);

程式例:#include <stdlib.h>

#include <stdio.h>int main(void)

{

char *string = "87654321", *endptr;

long lnumber;

lnumber = strtol(string, &endptr, 10);

printf("string = %s long = %ld/n", string, lnumber); return 0;

}

函數名: strupr

功 能: 将串中的小寫字母轉換為大寫字母

用 法: char *strupr(char *str);

程式例:#include <stdio.h>

#include <string.h>int main(void)

{

char *string = "abcdefghijklmnopqrstuvwxyz", *ptr;

ptr = strupr(string); printf("%s/n", ptr);

return 0;

}

函數名: swab

功 能: 交換位元組

用 法: void swab (char *from, char *to, int nbytes);

程式例:#include <stdlib.h>

#include <stdio.h>

#include <string.h>char source[15] = "rFna koBlrna d";

char target[15];int main(void)

{ swab(source, target, strlen(source));

printf("This is target: %s/n", target);

return 0;

}

函數名: system

功 能: 發出一個DOS指令

用 法: int system(char *command);

程式例:#include <stdlib.h>

#include <stdio.h>int main(void)

{ printf("About to spawn command.com and run a DOS /

command/n");

system("dir");

return 0;

}字母T開頭函數函數名: tan

功 能: 正切函數

用 法: double tan(double x);

程式例:#include <stdio.h>

#include <math.h>int main(void)

{

double result, x; x = 0.5;

result = tan(x); printf("The tan of %lf is %lf/n", x, result);

return 0;

}

函數名: tanh

功 能: 雙曲正切函數

用 法: double tanh(double x);

程式例:#include <stdio.h>

#include <math.h>int main(void)

{

double result, x; x = 0.5;

result = tanh(x); printf("The hyperbolic tangent of %lf is %lf/n",

x, result);

return 0;

}

函數名: tell

功 能: 取檔案指針的目前位置

用 法: long tell(int handle);

程式例:#include <string.h>

#include <stdio.h>

#include <fcntl.h>

#include <io.h>int main(void)

{

int handle;

char msg[] = "Hello world"; if ((handle =

open("TEST.$$$", O_CREAT | O_TEXT | O_APPEND)) == -1)

{

perror("Error:");

return 1;

}

write(handle, msg, strlen(msg));

printf("The file pointer is at byte %ld/n", tell(handle));

close(handle);

return 0;

}

函數名: textattr

功 能: 設定文本屬性

用 法: void textattr(int attribute);

程式例:#include <conio.h>int main(void)

{

int i; clrscr();

for (i=0; i<9; i++)

{ textattr(i + ((i+1) << 4));

cprintf("This is a test/r/n");

} return 0;

}

函數名: textbackground

功 能: 選擇新的文本背景顔色

用 法: void textbackground(int color);

程式例:#include <conio.h>int main(void)

{

int i, j; clrscr();

for (i=0; i<9; i++)

{ for (j=0; j<80; j++)

cprintf("C");

cprintf("/r/n");

textcolor(i+1);

textbackground(i);

} return 0;

}

函數名: textcolor

功 能: 在文本模式中選擇新的字元顔色

用 法: void textcolor(int color);

程式例:

#include <conio.h>int main(void)

{

int i; for (i=0; i<15; i++)

{ textcolor(i);

cprintf("Foreground Color/r/n");

} return 0;

}

函數名: textheight

功 能: 傳回以像素為機關的字元串高度

用 法: int far textheight(char far *textstring);

程式例:#include <graphics.h>

#include <stdlib.h>

#include <stdio.h>

#include <conio.h>int main(void)

{

int gdriver = DETECT, gmode, errorcode; int y = 0;

int i;

char msg[80];

initgraph(&gdriver, &gmode, "");

errorcode = graphresult();

if (errorcode != grOk)

{

printf("Graphics error:%s/n",grapherrormsg(errorcode));

printf("Press any key to halt:");

getch(); exit(1);

}

for (i=1; i<11; i++)

{

settextstyle(TRIPLEX_FONT, HORIZ_DIR, i);

sprintf(msg, "Size: %d", i);

outtextxy(1, y, msg);

y += textheight(msg);

}

getch();

closegraph();

return 0;

}

函數名: textmode

功 能: 将螢幕設定成文本模式

用 法: void textmode(int mode);

程式例:#include <conio.h>int main(void)

{

textmode(BW40);

cprintf("ABC");

getch(); textmode(C40); cprintf("ABC");

getch(); textmode(BW80);

cprintf("ABC");

getch(); textmode(C80);

cprintf("ABC");

getch(); textmode(MONO);

cprintf("ABC");

getch(); return 0;

}

函數名: textwidth

功 能: 傳回以像素為機關的字元串寬度

用 法: int far textwidth(char far *textstring);

程式例:#include <graphics.h>

#include <stdlib.h>

#include <stdio.h>

#include <conio.h>int main(void)

{

int gdriver = DETECT, gmode, errorcode;

int x = 0, y = 0;

int i;

char msg[80];

initgraph(&gdriver, &gmode, "");

errorcode = graphresult();

if (errorcode != grOk)

{ printf("Graphics error: %s/n",

grapherrormsg(errorcode));

printf("Press any key to halt:");

getch();

exit(1);

} y = getmaxy() / 2; settextjustify(LEFT_TEXT, CENTER_TEXT);

for (i=1; i<11; i++)

{

settextstyle(TRIPLEX_FONT, HORIZ_DIR, i);

sprintf(msg, "Size: %d", i);

outtextxy(x, y, msg);

x += textwidth(msg);

}

getch();

closegraph();

return 0;

}

函數名: time

功 能: 取一天的時間

用 法: logn time(long *tloc);

程式例:#include <time.h>

#include <stdio.h>

#include <dos.h>int main(void)

{

time_t t;

t = time(NULL);

printf("The number of seconds since January 1, 1970/

is %ld",t);

return 0;

}

函數名: tmpfile

功 能: 以二進制方式打開暫存檔案

用 法: FILE *tmpfile(void);

程式例:#include <stdio.h>

#include <process.h>int main(void)

{

FILE *tempfp; tempfp = tmpfile();

if (tempfp) printf("Temporary file created/n");

else

{

printf("Unable to create temporary file/n");

exit(1);

} return 0;

}

函數名: tmpnam

功 能: 建立一個唯一的檔案名

用 法: char *tmpnam(char *sptr);

程式例:#include <stdio.h>int main(void)

{

char name[13];

tmpnam(name);

printf("Temporary name: %s/n", name);

return 0;

}

函數名: tolower

功 能: 把字元轉換成小寫字母

用 法: int tolower(int c);

程式例:#include <string.h>

#include <stdio.h>

#include <ctype.h>int main(void)

{

int length, i;

char *string = "THIS IS A STRING";

length = strlen(string);

for (i=0; i<length; i++)

{

string[i] = tolower(string[i]);

}

printf("%s/n",string); return 0;

}

函數名: toupper

功 能: 把字元轉換成大寫字母

用 法: int toupper(int c);

程式例:#include <string.h>

#include <stdio.h>

#include <ctype.h>int main(void)

{

int length, i;

char *string = "this is a string";

length = strlen(string);

for (i=0; i<length; i++)

{

string[i] = toupper(string[i]);

} printf("%s/n",string); return 0;

}

函數名: tzset

功 能: UNIX時間相容函數

用 法: void tzset(void);

程式例:#include <time.h>

#include <stdlib.h>

#include <stdio.h>int main(void)

{

time_t td;

putenv("TZ=PST8PDT");

tzset();

time(&td);

printf("Current time = %s/n", asctime(localtime(&td)));

return 0;

}字母U開頭函數函數名: ultoa

功 能: 轉換一個無符号長整型數為字元串

用 法: char *ultoa( unsigned long value, char *string,

int radix );

程式例:#include <stdlib.h>

#include <stdio.h>int main( void )

{

unsigned long lnumber = 3123456789L;

char string[25];

ultoa(lnumber,string,10);

printf("string=%s unsigned long=%lu/n",string,lnumber); return 0;

}

函數名: ungetc

功 能: 把一個字元退回到輸入流中

用 法: int ungetc(char c, FILE *stream);

程式例:#include <stdio.h>

#include <ctype.h>int main( void )

{

int i=0;

char ch; puts("Input an integer followed by a char:");

while((ch = getchar()) != EOF && isdigit(ch))

i = 10 * i + ch - 48;

if (ch != EOF)

ungetc(ch, stdin); printf("i=%d,next char in buffer = %c/n",i,getchar());

return 0;

}

函數名: ungetch

功 能: 把一個字元退回到鍵盤緩沖區中

用 法: int ungetch(int c);

程式例:#include <stdio.h>

#include <ctype.h>

#include <conio.h>int main( void )

{

int i=0;

char ch;

puts("Input an integer followed by a char:");

while((ch = getche()) != EOF && isdigit(ch))

i = 10 * i + ch - 48;

if (ch != EOF)

ungetch(ch); printf("/n/ni=%d,next char in buffer=%c/n",i,getch());

return 0;

}

函數名: unixtodos

功 能: 把日期和時間轉換成DOS格式

用 法: void unixtodos(long utime, struct date *dateptr,

struct time *timeptr);

程式例:#include <stdio.h>

#include <dos.h>char *month[] = {"---", "Jan", "Feb", "Mar", "Apr", "May",

"Jun", "Jul", "Aug", "Sep", "Oct", "Nov",

"Dec"};#define SECONDS_PER_DAY 86400Lstruct date dt;

struct time tm;int main(void)

{

unsigned long val;

getdate(&dt);

gettime(&tm);

printf("today is %d %s %d/n",

dt.da_day, month[dt.da_mon], dt.da_year);

val = dostounix(&dt, &tm);

val -= (SECONDS_PER_DAY * 42);

unixtodos(val, &dt, &tm);

printf("42 days ago it was %d %s %d/n",

dt.da_day, month[dt.da_mon], dt.da_year);

return 0;

}

函數名: unlink

功 能: 删掉一個檔案

用 法: int unlink(char *filename);

程式例:#include <stdio.h>

#include <io.h>int main(void)

{

FILE *fp = fopen("junk.jnk","w");

int status; fprintf(fp,"junk"); status = access("junk.jnk",0);

if (status == 0)

printf("File exists/n");

else

printf("File doesn't exist/n"); fclose(fp);

unlink("junk.jnk");

status = access("junk.jnk",0);

if (status == 0)

printf("File exists/n");

else

printf("File doesn't exist/n");

return 0;

}

函數名: unlock

功 能: 解除檔案共享鎖

用 法: int unlock(int handle, long offset, long length);

程式例:#include <io.h>

#include <fcntl.h>

#include <sys/stat.h>

#include <process.h>

#include <share.h>

#include <stdio.h>int main(void)

{ int handle, status;

long length; handle = sopen("c://autoexec.bat",

O_RDONLY,SH_DENYNO,S_IREAD); if (handle < 0)

{

printf("sopen failed/n");

exit(1);

} length = filelength(handle);

status = lock(handle,0L,length/2); if (status == 0)

printf("lock succeeded/n");

else

printf("lock failed/n"); status = unlock(handle,0L,length/2); if (status == 0)

printf("unlock succeeded/n");

else

printf("unlock failed/n");

close(handle);

return 0;

}字母V開頭函數函數名: vfprintf

功 能: 送格式化輸出到一流中

用 法: int vfprintf( FILE *stream, char *format,

va_list param );

程式例:#include <stdio.h>

#include <stdlib.h>

#include <stdarg.h>FILE *fp;int vfpf(char *fmt, ...)

{ va_list argptr;

int cnt; va_start(argptr, fmt);

cnt = vfprintf(fp, fmt, argptr);

va_end(argptr); return(cnt);

}int main(void)

{

int inumber = 30;

float fnumber = 90.0; char string[4] = "abc"; fp = tmpfile();

if (fp == NULL)

{

perror("tmpfile() call");

exit(1);

} vfpf("%d %f %s", inumber, fnumber, string);

rewind(fp);

fscanf(fp,"%d %f %s", &inumber, &fnumber, string);

printf("%d %f %s/n", inumber, fnumber, string);

fclose(fp); return 0;

}

函數名: vfscanf

功 能: 從流中執行格式化輸入

用 法: int vfscanf( FILE *stream, char *format,

va_list param );

程式例:#include <stdio.h>

#include <stdlib.h>

#include <stdarg.h>FILE *fp;int vfsf(char *fmt, ...)

{ va_list argptr;

int cnt; va_start(argptr, fmt);

cnt = vfscanf(fp, fmt, argptr);

va_end(argptr); return(cnt);

}int main(void)

{

int inumber = 30; float fnumber = 90.0;

char string[4] = "abc"; fp = tmpfile();

if (fp == NULL)

{

perror("tmpfile() call");

exit(1);

}

fprintf(fp,"%d %f %s/n",inumber,fnumber,string);

rewind(fp); vfsf("%d %f %s",&inumber,&fnumber,string); printf("%d %f %s/n",inumber,fnumber,string);

fclose(fp); return 0;

}

函數名: vprintf

功 能: 送格式化輸出到stdout中

用 法: int vprintf(char *format, va_list param);

程式例:#include <stdio.h>

#include <stdarg.h>int vpf(char *fmt, ...)

{

va_list argptr;

int cnt; va_start(argptr, format); cnt = vprintf(fmt, argptr);

va_end(argptr); return(cnt);

}int main(void)

{

int inumber = 30;

float fnumber = 90.0;

char *string = "abc"; vpf("%d %f %s/n",inumber,fnumber,string);

return 0;

}

函數名: vscanf

功 能: 從stdin中執行格式化輸入

用 法: int vscanf(char *format, va_list param);

程式例:#include <stdio.h>

#include <conio.h>

#include <stdarg.h>int vscnf(char *fmt, ...)

{

va_list argptr;

int cnt;

printf("Enter an integer,a float,and a string/

(e.g.i,f,s,)/n");

va_start(argptr, fmt);

cnt = vscanf(fmt, argptr);

va_end(argptr); return(cnt);

}int main(void)

{

int inumber;

float fnumber;

char string[80]; vscnf("%d, %f, %s", &inumber, &fnumber, string);

printf("%d %f %s/n", inumber, fnumber, string); return 0;

}

函數名: vsprintf

功 能: 送格式化輸出到串中

用 法: int vsprintf( char *string, char *format,

va_list param );

程式例:#include <stdio.h>

#include <conio.h>

#include <stdarg.h>char buffer[80];int vspf(char *fmt, ...)

{ va_list argptr;

int cnt; va_start(argptr, fmt);

cnt = vsprintf(buffer, fmt, argptr);

va_end(argptr); return(cnt);

}int main(void)

{

int inumber = 30;

float fnumber = 90.0; char string[4] = "abc"; vspf("%d %f %s", inumber, fnumber, string);

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

return 0;

}

函數名: vsscanf

功 能: 從流中執行格式化輸入

用 法: int vsscanf(char *s, char *format, va_list param);

程式例:#include <stdio.h>

#include <conio.h>

#include <stdarg.h>char buffer[80] = "30 90.0 abc";int vssf(char *fmt, ...)

{

va_list argptr; int cnt; fflush(stdin); va_start(argptr, fmt);

cnt = vsscanf(buffer, fmt, argptr);

va_end(argptr); return(cnt);

}int main(void)

{

int inumber; float fnumber;

char string[80]; vssf("%d %f %s", &inumber, &fnumber, string);

printf("%d %f %s/n", inumber, fnumber, string);

return 0;

}字母W開頭函數函數名: wherex

功 能: 傳回視窗内水準光标位置

用 法: int wherex(void);

程式例:#include <conio.h>int main(void)

{

clrscr();

gotoxy(10,10);

cprintf("Current location is X: %d Y: %d/r/n",

wherex(), wherey()); getch(); return 0;

}

函數名: wherey

功 能: 傳回視窗内垂直光标位置

用 法: int wherey(void);

程式例:#include <conio.h>int main(void)

{

clrscr();

gotoxy(10,10);

cprintf("Current location is X: %d Y: %d/r/n",

wherex(), wherey()); getch(); return 0;

}

函數名: window

功 能: 定義活動文本模式視窗

用 法: void window(int left,int top,int right,int bottom);

程式例:#include <conio.h>int main(void)

{ window(10,10,40,11);

textcolor(BLACK);

textbackground(WHITE);

cprintf("This is a test/r/n"); return 0;

}

函數名: write

功 能: 寫到一檔案中

用 法: int write(int handel, void *buf, int nbyte);

程式例:#include <stdio.h>

#include <stdlib.h>

#include <fcntl.h>

#include <sys/stat.h>

#include <io.h>

#include <string.h>int main(void)

{

int handle;

char string[40];

int length, res;

if((handle=open("TEST.$$$",O_WRONLY|O_CREAT|O_TRUNC,

S_IREAD|S_IWRITE))==-1)

{

printf("Error opening file./n");

exit(1);

} strcpy(string, "Hello, world!/n");

length = strlen(string); if ((res = write(handle, string, length)) != length)

{ printf("Error writing to the file./n");

exit(1);

}

printf("Wrote %d bytes to the file./n", res); close(handle);

return 0;

}

繼續閱讀