【说明】 一共分为3个小节,1小节给定一个连接,该连接给了一些常用标准c的函数使用说明,但是不够全面。2小结按字母顺序排列,几乎覆盖了c中常用的函数,同时有些函数不在unix系统中支持了。3小节描述了unix系统中常用系统调用的使用说明。
1、【下面这个连接给出了一些c库的函数说明使用例程,但是不够全面,可以作为参考】
2、【如下对C语言库函数按字母顺序描述,如果上面连接中找不到,可以到这里查找到,需要说明的是,有些函数在新的libc中已经不提供了,如果要查找unix系统常用系统调用函数使用说明,请到小节3查找】
代码: | 函数名: abort 功 能: 异常终止一个进程 用 法: void abort(void); 程序例: #include #include int main(void) { printf("Calling abort()
"); abort(); return 0; /* This is never reached */ }
函数名: abs 功 能: 求整数的绝对值 用 法: int abs(int i); 程序例: #include #include
int main(void) { int number = -1234;
printf("number: %d absolute value: %d
", number, abs(number)); return 0; }
函数名: absread, abswirte 功 能: 绝对磁盘扇区读、写数据 用 法: int absread(int drive, int nsects, int sectno, void *buffer); int abswrite(int drive, int nsects, in tsectno, void *buffer); 程序例: /* absread example */
#include #include #include #include
int main(void) { int i, strt, ch_out, sector; char buf[512];
printf("Insert a diskette into drive A and press any key
"); getch(); sector = 0; if (absread(0, 1, sector, &buf) != 0) { perror("Disk problem"); exit(1); } printf("Read OK
"); strt = 3; for (i=0; i<80; i++) { ch_out = buf[strt+i]; putchar(ch_out); } printf("
"); return(0); }
函数名: access 功 能: 确定文件的访问权限 用 法: int access(const char *filename, int amode); 程序例: #include #include
int file_exists(char *filename);
int main(void) { printf("Does NOTEXIST.FIL exist: %s
", file_exists("NOTEXISTS.FIL") ? "YES" : "NO"); return 0; }
int file_exists(char *filename) { return (access(filename, 0) == 0); }
函数名: acos 功 能: 反余弦函数 用 法: double acos(double x); 程序例: #include #include
int main(void) { double result; double x = 0.5;
result = acos(x); printf("The arc cosine of %lf is %lf
", x, result); return 0; }
函数名: allocmem 功 能: 分配DOS存储段 用 法: int allocmem(unsigned size, unsigned *seg); 程序例: #include #include #include
int main(void) { unsigned int size, segp; int stat;
size = 64; /* (64 x 16) = 1024 bytes */ stat = allocmem(size, &segp); if (stat == -1) printf("Allocated memory at segment: %x
", segp); else printf("Failed: maximum number of paragraphs available is %u
", stat);
return 0; }
函数名: arc 功 能: 画一弧线 用 法: void far arc(int x, int y, int stangle, int endangle, int radius); 程序例: #include #include #include #include
int main(void) { /* request auto detection */ int gdriver = DETECT, gmode, errorcode; int midx, midy; int stangle = 45, endangle = 135; int radius = 100;
/* initialize graphics and local variables */ initgraph(&gdriver, &gmode, "");
/* read result of initialization */ errorcode = graphresult(); /* an error occurred */ if (errorcode != grOk) { printf("Graphics error: %s
", grapherrormsg(errorcode)); printf("Press any key to halt:"); getch();
exit(1); /* terminate with an error code */ }
midx = getmaxx() / 2; midy = getmaxy() / 2; setcolor(getmaxcolor());
/* draw arc */ arc(midx, midy, stangle, endangle, radius);
/* clean up */ getch(); closegraph(); return 0; }
函数名: asctime 功 能: 转换日期和时间为ASCII码 用 法: char *asctime(const struct tm *tblock); 程序例: #include #include #include
int main(void) { struct tm t; char str[80];
/* sample loading of tm structure */
t.tm_sec = 1; /* Seconds */ t.tm_min = 30; /* Minutes */ t.tm_hour = 9; /* Hour */ t.tm_mday = 22; /* Day of the Month */ t.tm_mon = 11; /* Month */ t.tm_year = 56; /* Year - does not include century */ t.tm_wday = 4; /* Day of the week */ t.tm_yday = 0; /* Does not show in asctime */ t.tm_isdst = 0; /* Is Daylight SavTime; does not show in asctime */
/* converts structure to null terminated string */
strcpy(str, asctime(&t)); printf("%s
", str);
return 0; }
函数名: asin 功 能: 反正弦函数 用 法: double asin(double x); 程序例: #include #include
int main(void) { double result; double x = 0.5;
result = asin(x); printf("The arc sin of %lf is %lf
", x, result); return(0); }
函数名: assert 功 能: 测试一个条件并可能使程序终止 用 法: void assert(int test); 程序例: #include #include #include
struct ITEM { int key; int value; };
/* add item to list, make sure list is not null */ void additem(struct ITEM *itemptr) { assert(itemptr != NULL); /* add item to list */ }
int main(void) { additem(NULL); return 0; }
函数名: atan 功 能: 反正切函数 用 法: double atan(double x); 程序例: #include #include
int main(void) { double result; double x = 0.5;
result = atan(x); printf("The arc tangent of %lf is %lf
", x, result); return(0); }
函数名: atan2 功 能: 计算Y/X的反正切值 用 法: double atan2(double y, double x); 程序例: #include #include
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
", (y / x), result); return 0; }
函数名: atexit 功 能: 注册终止函数 用 法: int atexit(atexit_t func); 程序例: #include #include
void exit_fn1(void) { printf("Exit function #1 called
"); }
void exit_fn2(void) { printf("Exit function #2 called
"); }
int main(void) { /* post exit function #1 */ atexit(exit_fn1); /* post exit function #2 */ atexit(exit_fn2); return 0; }
函数名: atof 功 能: 把字符串转换成浮点数 用 法: double atof(const char *nptr); 程序例: #include #include
int main(void) { float f; char *str = "12345.67";
f = atof(str); printf("string = %s float = %f
", str, f); return 0; }
函数名: atoi 功 能: 把字符串转换成长整型数 用 法: int atoi(const char *nptr); 程序例: #include #include
int main(void) { int n; char *str = "12345.67";
n = atoi(str); printf("string = %s integer = %d
", str, n); return 0; }
函数名: atol 功 能: 把字符串转换成长整型数 用 法: long atol(const char *nptr); 程序例:
#include #include
int main(void) { long l; char *str = "98765432";
l = atol(lstr); printf("string = %s integer = %ld
", str, l); return(0); } 函数名: bar 功 能: 画一个二维条形图 用 法: void far bar(int left, int top, int right, int bottom); 程序例: #include #include #include #include
int main(void) { /* request auto detection */ int gdriver = DETECT, gmode, errorcode; int midx, midy, i;
/* initialize graphics and local variables */ initgraph(&gdriver, &gmode, "");
/* read result of initialization */ errorcode = graphresult(); if (errorcode != grOk) /* an error occurred */ { printf("Graphics error: %s
", grapherrormsg(errorcode)); printf("Press any key to halt:"); getch(); exit(1); /* terminate with an error code */ }
midx = getmaxx() / 2; midy = getmaxy() / 2;
/* loop through the fill patterns */ for (i=SOLID_FILL; i{ /* set the fill style */ setfillstyle(i, getmaxcolor());
/* draw the bar */ bar(midx-50, midy-50, midx+50, midy+50);
getch(); }
/* clean up */ closegraph(); return 0; }
函数名: bar3d 功 能: 画一个三维条形图 用 法: void far bar3d(int left, int top, int right, int bottom, int depth, int topflag); 程序例:
#include #include #include #include
int main(void) { /* request auto detection */ int gdriver = DETECT, gmode, errorcode; int midx, midy, i;
/* initialize graphics, local variables */ initgraph(&gdriver, &gmode, "");
/* read result of initialization */ errorcode = graphresult(); if (errorcode != grOk) /* an error occurred */ { printf("Graphics error: %s
", grapherrormsg(errorcode)); printf("Press any key to halt:"); getch(); exit(1); /* terminate with error code */ }
midx = getmaxx() / 2; midy = getmaxy() / 2;
/* loop through the fill patterns */ for (i=EMPTY_FILL; i{ /* set the fill style */ setfillstyle(i, getmaxcolor());
/* draw the 3-d bar */ bar3d(midx-50, midy-50, midx+50, midy+50, 10, 1);
getch(); }
/* clean up */ closegraph(); return 0; }
函数名: bdos 功 能: DOS系统调用 用 法: int bdos(int dosfun, unsigned dosdx, unsigned dosal); 程序例:
#include #include
/* Get current drive as 'A', 'B', ... */ char current_drive(void) { char curdrive;
/* Get current disk as 0, 1, ... */ curdrive = bdos(0x19, 0, 0); return('A' + curdrive); }
int main(void) { printf("The current drive is %c:
", current_drive()); return 0; }
函数名: bdosptr 功 能: DOS系统调用 用 法: int bdosptr(int dosfun, void *argument, unsigned dosal); 程序例:
#include #include #include #include #include #include
#define BUFLEN 80
int main(void) { char buffer[BUFLEN]; int test;
printf("Enter full pathname of a directory
"); gets(buffer);
test = bdosptr(0x3B,buffer,0); if(test) { printf("DOS error message: %d
", errno); /* See errno.h for error listings */ exit (1); }
getcwd(buffer, BUFLEN); printf("The current directory is: %s
", buffer);
return 0; }
函数名: bioscom 功 能: 串行I/O通信 用 法: int bioscom(int cmd, char abyte, int port); 程序例:
#include #include
#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 ...
"); 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 #include
int main(void) { int result; char buffer[512];
printf("Testing to see if drive a: is ready
"); result = biosdisk(4,0,0,0,0,1,buffer); result &= 0x02; (result) ? (printf("Drive A: Ready
")) : (printf("Drive A: Not Ready
"));
return 0; }
函数名: biosequip 功 能: 检查设备 用 法: int biosequip(void); 程序例:
#include #include
int main(void) { int result; char buffer[512];
printf("Testing to see if drive a: is ready
"); result = biosdisk(4,0,0,0,0,1,buffer); result &= 0x02; (result) ? (printf("Drive A: Ready
")) : (printf("Drive A: Not Ready
"));
return 0; }
函数名: bioskey 功 能: 直接使用BIOS服务的键盘接口 用 法: int bioskey(int cmd); 程序例:
#include #include #include
#define RIGHT 0x01 #define LEFT 0x02 #define CTRL 0x04 #define ALT 0x08
int main(void) { int key, modifiers;
/* function 1 returns 0 until a key is pressed */ while (bioskey(1) == 0);
/* function 0 returns the key that is waiting */ key = bioskey(0);
/* use function 2 to determine if shift keys were used */ 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("]"); } /* print out the character read */ if (isalnum(key & 0xFF)) printf("'%c'
", key); else printf("%#02x
", key); return 0; }
函数名: biosmemory 功 能: 返回存储块大小 用 法:int biosmemory(void); 程序例:
#include #include
int main(void) { int memory_size;
memory_size = biosmemory(); /* returns value up to 640K */ printf("RAM size = %dK
",memory_size); return 0; }
函数名: biosprint 功 能: 直接使用BIOS服务的打印机I/O 用 法: int biosprint(int cmd, int byte, int port); 程序例:
#include #include #include
int main(void) { #define STATUS 2 /* printer status command */ #define PORTNUM 0 /* port number for LPT1 */
int status, abyte=0;
printf("Please turn off your printer. Press any key to continue
"); getch(); status = biosprint(STATUS, abyte, PORTNUM); if (status & 0x01) printf("Device time out.
"); if (status & 0x08) printf("I/O error.
");
if (status & 0x10) printf("Selected.
"); if (status & 0x20) printf("Out of paper.
");
if (status & 0x40) printf("Acknowledge.
"); if (status & 0x80) printf("Not busy.
");
return 0; }
函数名: biostime 功 能: 读取或设置BIOS时间 用 法: long biostime(int cmd, long newtime); 程序例:
#include #include #include #include
int main(void) { long bios_time;
clrscr(); cprintf("The number of clock ticks since midnight is:
"); cprintf("The number of seconds since midnight is:
"); cprintf("The number of minutes since midnight is:
"); cprintf("The number of hours since midnight is:
"); cprintf("
Press 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 #include
int main(void) { char *ptr;
printf("Changing allocation with brk()
"); ptr = malloc(1); printf("Before brk() call: %lu bytes free
", coreleft()); brk(ptr+1000); printf(" After brk() call: %lu bytes free
", coreleft()); return 0; }
函数名: bsearch 功 能: 二分法搜索 用 法: void *bsearch(const void *key, const void *base, size_t *nelem, size_t width, int(*fcmp)(const void *, const *)); 程序例:
#include #include
#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;
/* The cast of (int(*)(const void *,const void*)) is needed to avoid a type mismatch error at compile time */ 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.
"); else printf("512 isn't in the table.
");
return 0; } 函数名: cabs 功 能: 计算复数的绝对值 用 法: double cabs(struct complex z); 程序例: #include #include
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 #include
int main(void) { char *str = NULL;
/* allocate memory for string */ str = calloc(10, sizeof(char));
/* copy "Hello" into string */ strcpy(str, "Hello");
/* display string */ printf("String is %s
", str);
/* free memory */ free(str);
return 0; }
函数名: ceil 功 能: 向上舍入 用 法: double ceil(double x); 程序例:
#include #include
int main(void) { double number = 123.54; double down, up;
down = floor(number); up = ceil(number);
printf("original number %5.2lf
", number); printf("number rounded down %5.2lf
", down); printf("number rounded up %5.2lf
", up);
return 0; }
函数名: cgets 功 能: 从控制台读字符串 用 法: char *cgets(char *str); 程序例:
#include #include
int main(void) { char buffer[83]; char *p;
/* There's space for 80 characters plus the NULL terminator */ buffer[0] = 81;
printf("Input some chars:"); p = cgets(buffer); printf("
cgets read %d characters: "%s"
", buffer[1], p); printf("The returned pointer is %p, buffer[0] is at %p
", p, &buffer);
/* Leave room for 5 characters plus the NULL terminator */ buffer[0] = 6;
printf("Input some chars:"); p = cgets(buffer); printf("
cgets read %d characters: "%s"
", buffer[1], p); printf("The returned pointer is %p, buffer[0] is at %p
", p, &buffer); return 0; }
函数名: chdir 功 能: 改变工作目录 用 法: int chdir(const char *path); 程序例:
#include #include #include
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
", old_dir);
if (chdir("\")) { perror("chdir()"); exit(1); }
if (getcurdir(0, new_dir)) { perror("getcurdir()"); exit(1); } printf("Current directory is now: \%s
", new_dir);
printf("
Changing back to orignal directory: \%s
", old_dir); if (chdir(old_dir)) { perror("chdir()"); exit(1); }
return 0; }
函数名: _chmod, chmod 功 能: 改变文件的访问方式 用 法: int chmod(const char *filename, int permiss); 程序例:
#include #include #include
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
", filename); else printf("Made %s read-only
", filename); }
函数名: chsize 功 能: 改变文件大小 用 法: int chsize(int handle, long size); 程序例:
#include #include #include
int main(void) { int handle; char buf[11] = "0123456789";
/* create text file containing 10 bytes */ handle = open("DUMMY.FIL", O_CREAT); write(handle, buf, strlen(buf));
/* truncate the file to 5 bytes in size */ chsize(handle, 5);
/* close the file */ close(handle); return 0; }
函数名: circle 功 能: 在给定半径以(x, y)为圆心画圆 用 法: void far circle(int x, int y, int radius); 程序例:
#include #include #include #include
int main(void) { /* request auto detection */ int gdriver = DETECT, gmode, errorcode; int midx, midy; int radius = 100;
/* initialize graphics and local variables */ initgraph(&gdriver, &gmode, "");
/* read result of initialization */ errorcode = graphresult(); if (errorcode != grOk) /* an error occurred */ { printf("Graphics error: %s
", grapherrormsg(errorcode)); printf("Press any key to halt:"); getch(); exit(1); /* terminate with an error code */ }
midx = getmaxx() / 2; midy = getmaxy() / 2; setcolor(getmaxcolor());
/* draw the circle */ circle(midx, midy, radius);
/* clean up */ getch(); closegraph(); return 0; }
函数名: cleardevice 功 能: 清除图形屏幕 用 法: void far cleardevice(void); 程序例:
#include #include #include #include
int main(void) { /* request auto detection */ int gdriver = DETECT, gmode, errorcode; int midx, midy;
/* initialize graphics and local variables */ initgraph(&gdriver, &gmode, "");
/* read result of initialization */ errorcode = graphresult(); if (errorcode != grOk) /* an error occurred */ { printf("Graphics error: %s
", grapherrormsg(errorcode)); printf("Press any key to halt:"); getch(); exit(1); /* terminate with an error code */ }
midx = getmaxx() / 2; midy = getmaxy() / 2; setcolor(getmaxcolor());
/* for centering screen messages */ settextjustify(CENTER_TEXT, CENTER_TEXT);
/* output a message to the screen */ outtextxy(midx, midy, "press any key to clear the screen:");
/* wait for a key */ getch();
/* clear the screen */ cleardevice();
/* output another message */ outtextxy(midx, midy, "press any key to quit:");
/* clean up */ getch(); closegraph(); return 0; }
函数名: clearerr 功 能: 复位错误标志 用 法:void clearerr(FILE *stream); 程序例:
#include
int main(void) { FILE *fp; char ch;
/* open a file for writing */ fp = fopen("DUMMY.FIL", "w");
/* force an error condition by attempting to read */ ch = fgetc(fp); printf("%c
",ch);
if (ferror(fp)) { /* display an error message */ printf("Error reading from DUMMY.FIL
");
/* reset the error and EOF indicators */ clearerr(fp); }
fclose(fp); return 0; }
函数名: clearviewport 功 能: 清除图形视区 用 法: void far clearviewport(void); 程序例:
#include #include #include #include
#define CLIP_ON 1 /* activates clipping in viewport */
int main(void) { /* request auto detection */ int gdriver = DETECT, gmode, errorcode; int ht;
/* initialize graphics and local variables */ initgraph(&gdriver, &gmode, "");
/* read result of initialization */ errorcode = graphresult(); if (errorcode != grOk) /* an error occurred */ { printf("Graphics error: %s
", grapherrormsg(errorcode)); printf("Press any key to halt:"); getch(); exit(1); /* terminate with an error code */ }
setcolor(getmaxcolor()); ht = textheight("W");
/* message in default full-screen viewport */ outtextxy(0, 0, "* <-- (0, 0) in default viewport");
/* create a smaller viewport */ setviewport(50, 50, getmaxx()-50, getmaxy()-50, CLIP_ON);
/* display some messages */ outtextxy(0, 0, "* <-- (0, 0) in smaller viewport"); outtextxy(0, 2*ht, "Press any key to clear viewport:");
/* wait for a key */ getch();
/* clear the viewport */ clearviewport();
/* output another message */ outtextxy(0, 0, "Press any key to quit:");
/* clean up */ getch(); closegraph(); return 0; }
函数名: _close, close 功 能: 关闭文件句柄 用 法: int close(int handle); 程序例:
#include #include #include #include
main() { int handle; char buf[11] = "0123456789";
/* create a file containing 10 bytes */ handle = open("NEW.FIL", O_CREAT); if (handle > -1) { write(handle, buf, strlen(buf));
/* close the file */ close(handle); } else { printf("Error opening file
"); } return 0; }
函数名: clock 功 能: 确定处理器时间 用 法: clock_t clock(void); 程序例:
#include #include #include
int main(void) { clock_t start, end; start = clock();
delay(2000);
end = clock(); printf("The time was: %f
", (end - start) / CLK_TCK);
return 0; }
函数名: closegraph 功 能: 关闭图形系统 用 法: void far closegraph(void); 程序例:
#include #include #include #include
int main(void) { /* request auto detection */ int gdriver = DETECT, gmode, errorcode; int x, y;
/* initialize graphics mode */ initgraph(&gdriver, &gmode, "");
/* read result of initialization */ errorcode = graphresult();
if (errorcode != grOk) /* an error occurred */ { printf("Graphics error: %s
", grapherrormsg(errorcode)); printf("Press any key to halt:"); getch(); exit(1); /* terminate with an error code */ }
x = getmaxx() / 2; y = getmaxy() / 2;
/* output a message */ settextjustify(CENTER_TEXT, CENTER_TEXT); outtextxy(x, y, "Press a key to close the graphics system:");
/* wait for a key */ getch();
/* closes down the graphics system */ closegraph();
printf("We're now back in text mode.
"); printf("Press any key to halt:"); getch(); return 0; }
函数名: clreol 功 能: 在文本窗口中清除字符到行末 用 法: void clreol(void); 程序例:
#include
int main(void)
{ clrscr(); cprintf("The function CLREOL clears all characters from the
"); cprintf("cursor position to the end of the line within the
"); cprintf("current text window, without moving the cursor.
"); cprintf("Press any key to continue . . ."); gotoxy(14, 4); getch();
clreol(); getch();
return 0; }
函数名: clrscr 功 能: 清除文本模式窗口 用 法: void clrscr(void); 程序例:
#include
int main(void) { int i;
clrscr(); for (i = 0; i < 20; i++) cprintf("%d
", i); cprintf("
Press any key to clear screen"); getch();
clrscr(); cprintf("The screen has been cleared!"); getch();
return 0; }
函数名: coreleft 功 能: 返回未使用内存的大小 用 法: unsigned coreleft(void); 程序例:
#include #include
int main(void) { printf("The difference between the highest allocated block and
"); printf("the top of the heap is: %lu bytes
", (unsigned long) coreleft());
return 0; }
函数名: cos 功 能: 余弦函数 用 法: double cos(double x); 程序例:
#include #include
int main(void) { double result; double x = 0.5;
result = cos(x); printf("The cosine of %lf is %lf
", x, result); return 0; }
函数名: cosh 功 能: 双曲余弦函数 用 法: dluble cosh(double x); 程序例:
#include #include
int main(void) { double result; double x = 0.5;
result = cosh(x); printf("The hyperboic cosine of %lf is %lf
", x, result); return 0; }
函数名: country 功 能: 返回与国家有关的信息 用 法: struct COUNTRY *country(int countrycode, struct country *country); 程序例:
#include #include
#define USA 0
int main(void) { struct COUNTRY country_info;
country(USA, &country_info); printf("The currency symbol for the USA is: %s
", country_info.co_curr); return 0; }
函数名: cprintf 功 能: 送格式化输出至屏幕 用 法: int cprintf(const char *format[, argument, ...]); 程序例:
#include
int main(void) { /* clear the screen */ clrscr();
/* create a text window */ window(10, 10, 80, 25);
/* output some text in the window */ cprintf("Hello world
");
/* wait for a key */ getch(); return 0; }
函数名: cputs 功 能: 写字符到屏幕 用 法: void cputs(const char *string); 程序例:
#include
int main(void) { /* clear the screen */ clrscr();
/* create a text window */ window(10, 10, 80, 25);
/* output some text in the window */ cputs("This is within the window
");
/* wait for a key */ getch(); return 0; }
函数名: _creat creat 功 能: 创建一个新文件或重写一个已存在的文件 用 法: int creat (const char *filename, int permiss); 程序例:
#include #include #include #include
int main(void) { int handle; char buf[11] = "0123456789";
/* change the default file mode from text to binary */ _fmode = O_BINARY;
/* create a binary file for reading and writing */ handle = creat("DUMMY.FIL", S_IREAD | S_IWRITE);
/* write 10 bytes to the file */ write(handle, buf, strlen(buf));
/* close the file */ close(handle); return 0; }
函数名: creatnew 功 能: 创建一个新文件 用 法: int creatnew(const char *filename, int attrib); 程序例:
#include #include #include #include #include
int main(void) { int handle; char buf[11] = "0123456789";
/* attempt to create a file that doesn't already exist */ handle = creatnew("DUMMY.FIL", 0);
if (handle == -1) printf("DUMMY.FIL already exists.
"); else { printf("DUMMY.FIL successfully created.
"); write(handle, buf, strlen(buf)); close(handle); } return 0; }
函数名: creattemp 功 能: 创建一个新文件或重写一个已存在的文件 用 法: int creattemp(const char *filename, int attrib); 程序例:
#include #include #include
int main(void) { int handle; char pathname[128];
strcpy(pathname, "\");
/* create a unique file in the root directory */ handle = creattemp(pathname, 0);
printf("%s was the unique file created.
", pathname); close(handle); return 0; }
函数名: cscanf 功 能: 从控制台执行格式化输入 用 法: int cscanf(char *format[,argument, ...]); 程序例:
#include
int main(void) { char string[80];
/* clear the screen */ clrscr();
/* Prompt the user for input */ cprintf("Enter a string with no spaces:");
/* read the input */ cscanf("%s", string);
/* display what was read */ cprintf("
The string entered is: %s", string); return 0; }
函数名: ctime 功 能: 把日期和时间转换为字符串 用 法: char *ctime(const time_t *time); 程序例:
#include #include
int main(void) { time_t t;
time(&t); printf("Today's date and time: %s
", ctime(&t)); return 0; }
函数名: ctrlbrk 功 能: 设置Ctrl-Break处理程序 用 法: void ctrlbrk(*fptr)(void); 程序例:
#include #include
#define ABORT 0
int c_break(void) { printf("Control-Break pressed. Program aborting ...
"); return (ABORT); }
int main(void) { ctrlbrk(c_break); for(;;) { printf("Looping... Press to quit:
"); } return 0; } 函数名: delay 功 能: 将程序的执行暂停一段时间(毫秒) 用 法: void delay(unsigned milliseconds); 程序例: /* Emits a 440-Hz tone for 500 milliseconds */ #include int main(void) { sound(440); delay(500); nosound();
return 0; }
函数名: delline 功 能: 在文本窗口中删去一行 用 法: void delline(void); 程序例:
#include
int main(void) { clrscr(); cprintf("The function DELLINE deletes the line containing the
"); cprintf("cursor and moves all lines below it one line up.
"); cprintf("DELLINE operates within the currently active text
"); cprintf("window. Press any key to continue . . ."); gotoxy(1,2); /* Move the cursor to the second line and first column */ getch();
delline(); getch();
return 0; }
函数名: detectgraph 功 能: 通过检测硬件确定图形驱动程序和模式 用 法: void far detectgraph(int far *graphdriver, int far *graphmode); 程序例:
#include #include #include #include
/* names of the various cards supported */ 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) { /* returns detected hardware info. */ int gdriver, gmode, errorcode;
/* detect graphics hardware available */ detectgraph(&gdriver, &gmode);
/* read result of detectgraph call */ errorcode = graphresult(); if (errorcode != grOk) /* an error occurred */ { printf("Graphics error: %s
", grapherrormsg(errorcode)); printf("Press any key to halt:"); getch(); exit(1); /* terminate with an error code */ }
/* display the information detected */ clrscr(); printf("You have %s video display card.
", dname[gdriver]); printf("Press any key to halt:"); getch(); return 0; }
函数名: difftime 功 能: 计算两个时刻之间的时间差 用 法: double difftime(time_t time2, time_t time1); 程序例:
#include #include #include #include
int main(void) { time_t first, second;
clrscr(); first = time(NULL); /* Gets system time */ delay(2000); /* Waits 2 secs */ second = time(NULL); /* Gets system time again */
printf("The difference is: %f seconds
",difftime(second,first)); getch();
return 0; }
函数名: disable 功 能: 屏蔽中断 用 法: void disable(void); 程序例:
/***NOTE: This is an interrupt service routine. You cannot compile this program with Test Stack Overflow turned on and get an executable file that operates correctly. */
#include #include #include
#define INTR 0X1C /* The clock tick interrupt */
void interrupt ( *oldhandler)(void);
int count=0;
void interrupt handler(void) { /* disable interrupts during the handling of the interrupt */ disable(); /* increase the global counter */ count++; /* reenable interrupts at the end of the handler */ enable(); /* call the old routine */ oldhandler(); }
int main(void) { /* save the old interrupt vector */ oldhandler = getvect(INTR);
/* install the new interrupt handler */ setvect(INTR, handler);
/* loop until the counter exceeds 20 */ while (count < 20) printf("count is %d
",count);
/* reset the old interrupt handler */ setvect(INTR, oldhandler);
return 0; }
函数名: div 功 能: 将两个整数相除, 返回商和余数 用 法: div_t (int number, int denom); 程序例:
#include #include
div_t x;
int main(void) { x = div(10,3); printf("10 div 3 = %d remainder %d
", x.quot, x.rem);
return 0; }
函数名: dosexterr 功 能: 获取扩展DOS错误信息 用 法: int dosexterr(struct DOSERR *dblkp); 程序例:
#include #include
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:
"); printf(" Extended error: %d
",info.exterror); printf(" Class: %x
",info.class); printf(" Action: %x
",info.action); printf(" Error Locus: %x
",info.locus);
return 0; }
函数名: dostounix 功 能: 转换日期和时间为UNIX时间格式 用 法: long dostounix(struct date *dateptr, struct time *timeptr); 程序例:
#include #include #include #include
int main(void) { time_t t; struct time d_time; struct date d_date; struct tm *local;
getdate(&d_date); gettime(&d_time);
t = dostounix(&d_date, &d_time); local = localtime(&t); printf("Time and Date: %s
", asctime(local));
return 0; }
函数名: drawpoly 功 能: 画多边形 用 法: void far drawpoly(int numpoints, int far *polypoints); 程序例:
#include #include #include #include
int main(void) { /* request auto detection */ int gdriver = DETECT, gmode, errorcode; int maxx, maxy;
/* our polygon array */ int poly[10];
/* initialize graphics and local variables */ initgraph(&gdriver, &gmode, "");
/* read result of initialization */ errorcode = graphresult(); if (errorcode != grOk) /* an error occurred */ { printf("Graphics error: %s
", grapherrormsg(errorcode)); printf("Press any key to halt:"); getch(); /* terminate with an error code */ exit(1); }
maxx = getmaxx(); maxy = getmaxy();
poly[0] = 20; /* 1st vertext */ poly[1] = maxy / 2;
poly[2] = maxx - 20; /* 2nd */ poly[3] = 20;
poly[4] = maxx - 50; /* 3rd */ poly[5] = maxy - 20;
poly[6] = maxx / 2; /* 4th */ poly[7] = maxy / 2; /* drawpoly doesn't automatically close the polygon, so we close it. */ poly[8] = poly[0]; poly[9] = poly[1];
/* draw the polygon */ drawpoly(5, poly);
/* clean up */ getch(); closegraph(); return 0; }
函数名: dup 功 能: 复制一个文件句柄 用 法: int dup(int handle); 程序例:
#include #include #include #include
void flush(FILE *stream);
int main(void) { FILE *fp; char msg[] = "This is a test";
/* create a file */ fp = fopen("DUMMY.FIL", "w");
/* write some data to the file */ fwrite(msg, strlen(msg), 1, fp);
clrscr(); printf("Press any key to flush DUMMY.FIL:"); getch();
/* flush the data to DUMMY.FIL without closing it */ flush(fp);
printf("
File was flushed, Press any key to quit:"); getch(); return 0; }
void flush(FILE *stream) { int duphandle;
/* flush TC's internal buffer */ fflush(stream);
/* make a duplicate file handle */ duphandle = dup(fileno(stream));
/* close the duplicate handle to flush the DOS buffer */ close(duphandle); }
函数名: dup2 功 能: 复制文件句柄 用 法: int dup2(int oldhandle, int newhandle); 程序例:
#include #include #include #include
int main(void) { #define STDOUT 1
int nul, oldstdout; char msg[] = "This is a test";
/* create a file */ nul = open("DUMMY.FIL", O_CREAT | O_RDWR, S_IREAD | S_IWRITE);
/* create a duplicate handle for standard output */ oldstdout = dup(STDOUT); /* redirect standard output to DUMMY.FIL by duplicating the file handle onto the file handle for standard output. */ dup2(nul, STDOUT);
/* close the handle for DUMMY.FIL */ close(nul);
/* will be redirected into DUMMY.FIL */ write(STDOUT, msg, strlen(msg));
/* restore original standard output handle */ dup2(oldstdout, STDOUT);
/* close duplicate handle for STDOUT */ close(oldstdout);
return 0; } 函数名: ecvt 功 能: 把一个浮点数转换为字符串 用 法: char ecvt(double value, int ndigit, int *decpt, int *sign); 程序例:
#include #include #include
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
", string, dec, sign);
value = -123.45; ndig= 15; string = ecvt(value,ndig,&dec,&sign); printf("string = %s dec = %d sign = %d
", string, dec, sign);
value = 0.6789e5; /* scientific notation */ ndig = 5; string = ecvt(value,ndig,&dec,&sign); printf("string = %s dec = %d sign = %d
", string, dec, sign);
return 0; }
函数名: ellipse 功 能: 画一椭圆 用 法: void far ellipse(int x, int y, int stangle, int endangle, int xradius, int yradius); 程序例:
#include #include #include #include
int main(void) { /* request auto detection */ int gdriver = DETECT, gmode, errorcode; int midx, midy; int stangle = 0, endangle = 360; int xradius = 100, yradius = 50;
/* initialize graphics, local variables */ initgraph(&gdriver, &gmode, "");
/* read result of initialization */ errorcode = graphresult(); if (errorcode != grOk) /* an error occurred */ { printf("Graphics error: %s
", grapherrormsg(errorcode)); printf("Press any key to halt:"); getch(); exit(1); /* terminate with an error code */ }
midx = getmaxx() / 2; midy = getmaxy() / 2; setcolor(getmaxcolor());
/* draw ellipse */ ellipse(midx, midy, stangle, endangle, xradius, yradius);
/* clean up */ getch(); closegraph(); return 0; }
函数名: enable 功 能: 开放硬件中断 用 法: void enable(void); 程序例:
/* ** NOTE: This is an interrupt service routine. You can NOT compile this program with Test Stack Overflow turned on and get an executable file which will operate correctly. */
#include #include #include
/* The clock tick interrupt */ #define INTR 0X1C
void interrupt ( *oldhandler)(void);
int count=0;
void interrupt handler(void) { /* disable interrupts during the handling of the interrupt */ disable(); /* increase the global counter */ count++; /* re enable interrupts at the end of the handler */ enable(); /* call the old routine */ oldhandler(); }
int main(void) { /* save the old interrupt vector */ oldhandler = getvect(INTR);
/* install the new interrupt handler */ setvect(INTR, handler);
/* loop until the counter exceeds 20 */ while (count < 20) printf("count is %d
",count);
/* reset the old interrupt handler */ setvect(INTR, oldhandler);
return 0; }
函数名: eof 功 能: 检测文件结束 用 法: int eof(int *handle); 程序例:
#include #include #include #include #include
int main(void) { int handle; char msg[] = "This is a test"; char ch;
/* create a file */ handle = open("DUMMY.FIL", O_CREAT | O_RDWR, S_IREAD | S_IWRITE);
/* write some data to the file */ write(handle, msg, strlen(msg));
/* seek to the beginning of the file */ lseek(handle, 0L, SEEK_SET);
/* reads chars from the file until hit EOF */ 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[]); 程序例:
/* execv example */ #include #include #include
void main(int argc, char *argv[]) { int i;
printf("Command line arguments:
"); for (i=0; iprintf("[%2d] : %s
", i, argv[i]);
printf("About to exec child with arg1 arg2 ...
"); execv("CHILD.EXE", argv);
perror("exec error");
exit(1); }
函数名: exit 功 能: 终止程序 用 法: void exit(int status); 程序例:
#include #include #include
int main(void) { int status;
printf("Enter either 1 or 2
"); status = getch(); /* Sets DOS errorlevel */ exit(status - '0');
/* Note: this line is never reached */ return 0; }
函数名: exp 功 能: 指数函数 用 法: double exp(double x); 程序例:
#include #include
int main(void) { double result; double x = 4.0;
result = exp(x); printf("'e' raised to the power of %lf (e ^ %lf) = %lf
", x, x, result);
return 0; }
|
|