返回列表 发帖

常用C语言库函数

函数名: abort 功 能: 异常终止一个进程 用 法: void abort(void); 程序例: #include #include int main(void) { printf("Calling abort()\n"); 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\n", 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\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 #include 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 #include 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 #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\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 #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\n", 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\n", 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\n", 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\n", 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\n", (y / x), result); return 0; } 函数名: atexit 功 能: 注册终止函数 用 法: int atexit(atexit_t func); 程序例: #include #include void exit_fn1(void) { printf("Exit function #1 called\n"); } void exit_fn2(void) { printf("Exit function #2 called\n"); } 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\n", 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\n", 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\n", str, l); return(0); }

常用C语言库函数

函数名: 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 */ nitgraph(&gdriver, &gmode, ""); /* read result of initialization */ errorcode = graphresult(); if (errorcode != grOk) /* an error occurred */ { printf("Graphics error: %s\n", grapherrormsg(errorcode)); printf("Press any key to halt:"); getch(); exit(1); /* terminate with an error code */ } midx = getmaxx() / 2; midy = getmaxy() / 2; /* loop through the fill patterns */ for (i=SOLID_FILL; i #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\n", 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 #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:\n", 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\n"); gets(buffer); test = bdosptr(0x3B,buffer,0); if(test) { printf("DOS error message: %d\n", errno); /* See errno.h for error listings */ 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 #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 ...\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 #include 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 #include 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 #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';\n", key); else printf("%#02x\n", key); return 0; } 函数名: biosmemory 功 能: 返回存储块大小 用 法:int biosmemory(void); 程序例: #include #include i nt main(void) { int memory_size; memory_size = biosmemory(); /* returns value up to 640K */ printf("RAM size = %dK\n",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\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 #include #include #include 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 #include 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 #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.\n"); else printf("512 isn';t in the table.\n"); return 0; }

TOP

常用C语言库函数

函数名: 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\n", 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\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 #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("\ncgets read %d characters: \"%s\"\n", buffer[1], p); printf("The returned pointer is %p, buffer[0] is at %p\n", p, &buffer); /* Leave room for 5 characters plus the NULL terminator */ 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 #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\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 #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\n", filename); else printf("Made %s read-only\n", 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\n", 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\n", 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\n",ch); if (ferror(fp)) { /* display an error message */ printf("Error reading from DUMMY.FIL\n"); /* 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\n", 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 int 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\n"); } 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\n", (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\n", 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.\n"); 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\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 int main(void) { int i; clrscr(); or (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 #include 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 #include nt 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 #include 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 #include #define USA 0 int 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 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\r\n"); /* 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\r\n"); /* 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.\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 #include #include int main(void) { nt 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.\n", 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("\r\nThe 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\n", 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 ...\n"); return (ABORT); } int main(void) { ctrlbrk(c_break); for(;;) { printf("Looping... Press to quit:\n"); } return 0; }

TOP

常用C语言库函数

函数名: 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\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); /* 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\n", \ grapherrormsg(errorcode)); printf("Press any key to halt:"); getch(); exit(1); /* terminate with an error code */ } /* display the information detected */ clrscr(); printf("You have %s video display \ card.\n", 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\n",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 interrupthandler(void) { /* disable interrupts during the handling of the interrupt */ disable(); /* increase the global counter */ count++; /* reenable interrupts at the end of the handler */ enable(); /* call the old routine */ oldhandler(); } int main(void) { /* save the old interrupt vector */ oldhandler = getvect(INTR); /* install the new interrupt handler */ setvect(INTR, handler); /* loop until the counter exceeds 20 */ while (count < 20) printf("count is %d\n",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\n", 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:\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 #include #include #include int main(void) { time_t t; struct time d_time; struct date d_date; struct tm *local; getdate(&d_date); gettime(&d_time); t = dostounix(&d_date, &d_time); local = localtime(&t); printf("Time and Date: %s\n", \ asctime(local)); return 0; } 函数名: drawpoly 功 能: 画多边形 用 法: void far drawpoly(int numpoints, int far *polypoints); 程序例: #include #include #include #include int main(void) { /* request auto detection */ int gdriver = DETECT, gmode, errorcode; int maxx, maxy; /* our polygon array */ int poly[10]; /* initialize graphics and local variables */ initgraph(&gdriver, &gmode, ""); /* read result of initialization */ errorcode = graphresult(); if (errorcode != grOk) /* an error occurred */ { printf("Graphics error: %s\n", \ grapherrormsg(errorcode)); printf("Press any key to halt:"); getch(); /* terminate with an error code */ exit(1); } maxx = getmaxx(); maxy = getmaxy(); poly[0] = 20; /* 1st vertext */ poly[1] = maxy / 2; poly[2] = maxx - 20; /* 2nd */ poly[3] = 20; poly[4] = maxx - 50; /* 3rd */ poly[5] = maxy - 20; poly[6] = maxx / 2; /* 4th */ poly[7] = maxy / 2; /* drawpoly doesn';t automatically close the polygon, so we close it. */ poly[8] = poly[0]; poly[9] = poly[1]; /* draw the polygon */ drawpoly(5, poly); /* clean up */ getch(); closegraph(); return 0; } 函数名: dup 功 能: 复制一个文件句柄 用 法: int dup(int handle); 程序例: #include #include #include #include void flush(FILE *stream); int main(void) { FILE *fp; char msg[] = "This is a test"; /* create a file */ fp = fopen("DUMMY.FIL", "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("\nFile was flushed, Press any \ key to quit:"); getch(); return 0; } void flush(FILE *stream) { int duphandle; /* flush TC';s internal buffer */ fflush(stream); /* make a duplicate file handle */ duphandle = dup(fileno(stream)); /* close the duplicate handle to flush the DOS buffer */ close(duphandle); } 函数名: dup2 功 能: 复制文件句柄 用 法: int dup2(int oldhandle, int newhandle); 程序例: #include #include #include #include int main(void) { #define STDOUT 1 int nul, oldstdout; char msg[] = "This is a test"; /* create a file */ nul = open("DUMMY.FIL", 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; }

TOP

常用C语言库函数

函数名: ecvt 功 能: 把一个浮点数转换为字符串 用 法: char ecvt(double value, int ndigit, int *decpt, int *sign); 程序例: #include #include #include int main(void) { char *string; double value; nt 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; /* scientific notation */ 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 #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\n", 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\n",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[]) { nt i; printf("Command line arguments:\n"); for (i=0; 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 #include #include int main(void) { int status; printf("Enter either 1 or 2\n"); 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\n", x, x, result); return 0; }

TOP

常用C语言库函数

函数名: fabs 功 能: 返回浮点数的绝对值 用 法: double fabs(double x); 程序例: #include #include 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 #include #include #include int main(void) { char far *fptr; char *str = "Hello"; /* allocate memory for the far pointer */ fptr = farcalloc(10, sizeof(char)); /* copy "Hello" into allocated memory */ /* Note: movedata is used because you might be in a small data model, in which case a normal string copy routine can not be used since it assumes the pointer size is near. */ movedata(FP_SEG(str), FP_OFF(str), FP_SEG(fptr), FP_OFF(fptr), strlen(str)); /* display string (note the F modifier) */ printf("Far string is: %Fs\n", fptr); /* free the memory */ farfree(fptr); return 0; } 函数名: farcoreleft 功 能: 返回远堆中未作用存储区大小 用 法: long farcoreleft(void); 程序例: #include #include 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 #include #include #include int main(void) { char far *fptr; char *str = "Hello"; /* allocate memory for the far pointer */ fptr = farcalloc(10, sizeof(char)); /* copy "Hello" into allocated memory */ /* Note: movedata is used because you might be in a small data model, in which case a normal string copy routine can';t be used since it assumes the pointer size is near. */ movedata(FP_SEG(str), FP_OFF(str), FP_SEG(fptr), FP_OFF(fptr), strlen(str)); /* display string (note the F modifier) */ printf("Far string is: %Fs\n", fptr); /* free the memory */ farfree(fptr); return 0; } 函数名: farmalloc 功 能: 从远堆中分配存储块 用 法: void far *farmalloc(unsigned long size); 程序例: #include #include #include #include int main(void) { char far *fptr; char *str = "Hello"; /* allocate memory for the far pointer */ fptr = farmalloc(10); /* copy "Hello" into allocated memory */ /* Note: movedata is used because we might be in a small data model, in which case a normal string copy routine can not be used since it assumes the pointer size is near. */ movedata(FP_SEG(str), FP_OFF(str), FP_SEG(fptr), FP_OFF(fptr), strlen(str)); /* display string (note the F modifier) */ printf("Far string is: %Fs\n", fptr); /* free the memory */ farfree(fptr); return 0; } 函数名: farrealloc 功 能: 调整远堆中的分配块 用 法: void far *farrealloc(void far *block, unsigned long newsize); 程序例: #include #include 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 #include int main(void) { FILE *fp; char buf[11] = "0123456789"; /* create a file containing 10 bytes */ fp = fopen("DUMMY.FIL", "w"); fwrite(&buf, strlen(buf), 1, fp); /* close the file */ fclose(fp); return 0; } 函数名: fcloseall 功 能: 关闭打开流 用 法: int fcloseall(void); 程序例: #include int main(void) { int streams_closed; /* open two streams */ fopen("DUMMY.ONE", "w"); fopen("DUMMY.TWO", "w"); /* close the open streams */ streams_closed = fcloseall(); if (streams_closed == EOF) /* issue an error message */ perror("Error"); else /* print result of fcloseall() function */ printf("%d streams were closed.\n", streams_closed); return 0; } 函数名: fcvt 功 能: 把一个浮点数转换为字符串 用 法: char *fcvt(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\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; /* scientific notation */ 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 #include #include #include int main(void) { int handle; FILE *stream; /* open a file */ handle = open("DUMMY.FIL", O_CREAT, S_IREAD | S_IWRITE); /* now turn the handle into a stream */ 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 int main(void) { FILE *stream; /* open a file for reading */ stream = fopen("DUMMY.FIL", "r"); /* read a character from the file */ fgetc(stream); /* check for EOF */ if (feof(stream)) printf("We have reached end-of-file\n"); /* close the file */ fclose(stream); return 0; } 函数名: ferror 功 能: 检测流上的错误 用 法: int ferror(FILE *stream); 程序例: #include int main(void) { FILE *stream; /* open a file for writing */ stream = fopen("DUMMY.FIL", "w"); /* force an error condition by attempting to read */ (void) getc(stream); if (ferror(stream)) /* test for an error on the stream */ { /* display an error message */ printf("Error reading from DUMMY.FIL\n"); /* reset the error and EOF indicators */ clearerr(stream); } fclose(stream); return 0; } 函数名: fflush 功 能: 清除一个流 用 法: int fflush(FILE *stream); 程序例: #include #include #include #include void flush(FILE *stream); int main(void) { FILE *stream; char msg[] = "This is a test"; /* create a file */ stream = fopen("DUMMY.FIL", "w"); /* write some data to the file */ fwrite(msg, strlen(msg), 1, stream); clrscr(); printf("Press any key to flush\ DUMMY.FIL:"); getch(); /* flush the data to DUMMY.FIL without\ closing it */ flush(stream); printf("\nFile was flushed, Press any key\ to quit:"); getch(); return 0; } void flush(FILE *stream) { int duphandle; /* flush the stream';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); } 函数名: fgetc 功 能: 从流中读取字符 用 法: int fgetc(FILE *stream); 程序例: #include #include #include int main(void) { FILE *stream; char string[] = "This is a test"; char ch; /* open a file for update */ stream = fopen("DUMMY.FIL", "w+"); /* write a string into the file */ fwrite(string, strlen(string), 1, stream); /* seek to the beginning of the file */ fseek(stream, 0, SEEK_SET); do { /* read a char from the file */ ch = fgetc(stream); /* display the character */ putch(ch); } while (ch != EOF); fclose(stream); return 0; } 函数名: fgetchar 功 能: 从流中读取字符 用 法: int fgetchar(void); 程序例: #include int main(void) { char ch; /* prompt the user for input */ printf("Enter a character followed by : "); /* read the character from stdin */ ch = fgetchar(); /* display what was read */ printf("The character read is: ';%c';\n", ch); return 0; } 函数名: fgetpos 功 能: 取得当前文件的句柄 用 法: int fgetpos(FILE *stream); 程序例: #include #include int main(void) { FILE *stream; char string[] = "This is a test"; fpos_t filepos; /* open a file for update */ stream = fopen("DUMMY.FIL", "w+"); /* write a string into the file */ fwrite(string, strlen(string), 1, stream); /* report the file pointer position */ 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 #include int main(void) { FILE *stream; char string[] = "This is a test"; char msg[20]; /* open a file for update */ stream = fopen("DUMMY.FIL", "w+"); /* write a string into the file */ fwrite(string, strlen(string), 1, stream); /* seek to the start of the file */ fseek(stream, 0, SEEK_SET); /* read a string from the file */ fgets(msg, strlen(string)+1, stream); /* display the string */ printf("%s", msg); fclose(stream); return 0; } 函数名: filelength 功 能: 取文件长度字节数 用 法: long filelength(int handle); 程序例: #include #include #include #include int main(void) { int handle; char buf[11] = "0123456789"; /* create a file containing 10 bytes */ handle = open("DUMMY.FIL", O_CREAT); write(handle, buf, strlen(buf)); /* display the size of the file */ printf("file length in bytes: %ld\n", filelength(handle)); /* close the file */ close(handle); return 0; } 函数名: fillellipse 功 能: 画出并填充一椭圆 用 法: void far fillellipse(int x, int y, int xradius, int yradius); 程序例: #include #include 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 #include #include #include int main(void) { /* request auto detection */ int gdriver = DETECT, gmode, errorcode; int i, maxx, maxy; /* our polygon array */ int poly[8]; /* initialize graphics, local variables */ initgraph(&gdriver, &gmode, ""); /* read result of initialization */ errorcode = graphresult(); if (errorcode != grOk) /* an error occurred */ { printf("Graphics error: %s\n", grapherrormsg(errorcode)); printf("Press any key to halt:"); getch(); exit(1); /* terminate with an error code */ } maxx = getmaxx(); maxy = getmaxy(); 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; /* 4th vertex. fillpoly automatically closes the polygon. */ poly[6] = maxx / 2; poly[7] = maxy / 2; /* loop through the fill patterns */ for (i=EMPTY_FILL; i #include 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 #include #include #include int main(void) { /* request auto detection */ int gdriver = DETECT, gmode, errorcode; int maxx, maxy; /* initialize graphics, local variables */ initgraph(&gdriver, &gmode, ""); /* read result of initialization */ errorcode = graphresult(); if (errorcode != grOk) /* an error occurred */ { printf("Graphics error: %s\n", grapherrormsg(errorcode)); printf("Press any key to halt:"); getch(); exit(1); /* terminate with an error code */ } maxx = getmaxx(); maxy = getmaxy(); /* select drawing color */ setcolor(getmaxcolor()); /* select fill color */ setfillstyle(SOLID_FILL, getmaxcolor()); /* draw a border around the screen */ rectangle(0, 0, maxx, maxy); /* draw some circles */ circle(maxx / 3, maxy /2, 50); circle(maxx / 2, 20, 100); circle(maxx-20, maxy-50, 75); circle(20, maxy-20, 25); /* wait for a key */ getch(); /* fill in bounded region */ floodfill(2, 2, getmaxcolor()); /* clean up */ getch(); closegraph(); return 0; } 函数名: floor 功 能: 向下舍入 用 法: double floor(double x); 程序例: #include #include 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 int main(void) { FILE *stream; /* create a file */ stream = fopen("DUMMY.FIL", "w"); /* flush all open streams */ printf("%d streams were flushed.\n", flushall()); /* close the file */ fclose(stream); return 0; } 函数名: fmod 功 能: 计算x对y的模, 即x/y的余数 用 法: double fmod(double x, double y); 程序例: #include #include 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 #include #include int main(void) { char s[MAXPATH]; char drive[MAXDRIVE]; char dir[MAXDIR]; char file[MAXFILE]; char ext[MAXEXT]; getcwd(s,MAXPATH); /* get the current working directory */ strcat(s,"\\"); /* append on a trailing \ character */ fnsplit(s,drive,dir,file,ext); /* split the string to separate elems */ strcpy(file,"DATA"); strcpy(ext,".TXT"); fnmerge(s,drive,dir,file,ext); /* merge everything into one string */ puts(s); /* display resulting string */ return 0; } 函数名: fopen 功 能: 打开一个流 用 法: FILE *fopen(char *filename, char *type); 程序例: #include #include #include int main(void) { char *s; char drive[MAXDRIVE]; char dir[MAXDIR]; char file[MAXFILE]; char ext[MAXEXT]; int flags; s=getenv("COMSPEC"); /* get the comspec environment parameter */ 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,...]); 程序例: /* Program to create backup of the AUTOEXEC.BAT file */ #include 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); 程序例: /* FP_OFF */ #include #include 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); 程序例: /* FP_SEG */ #include #include 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 int main(void) { char msg[] = "Hello world"; int i = 0; while (msg) { fputc(msg, stdout); i++; } return 0; } 函数名: fputchar 功 能: 送一个字符到标准输出流(stdout)中 用 法: int fputchar(char ch); 程序例: #include int main(void) { char msg[] = "This is a test"; int i = 0; while (msg) { fputchar(msg); i++; } return 0; } 函数名: fputs 功 能: 送一个字符到一个流中 用 法: int fputs(char *string, FILE *stream); 程序例: #include int main(void) { /* write a string to standard output */ fputs("Hello world\n", stdout); return 0; } 函数名: fread 功 能: 从一个流中读数据 用 法: int fread(void *ptr, int size, int nitems, FILE *stream); 程序例: #include #include 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; } /* write some data to the file */ fwrite(msg, strlen(msg)+1, 1, stream); /* seek to the beginning of the file */ fseek(stream, SEEK_SET, 0); /* read the data and display it */ fread(buf, strlen(msg)+1, 1, stream); printf("%s\n", buf); fclose(stream); return 0; } 函数名: free 功 能: 释放已分配的块 用 法: void free(void *ptr); 程序例: #include #include #include int main(void) { char *str; /* allocate memory for string */ str = malloc(10); /* copy "Hello" to string */ strcpy(str, "Hello"); /* display string */ printf("String is %s\n", str); /* free memory */ free(str); return 0; } 函数名: freemem 功 能: 释放先前分配的DOS内存块 用 法: int freemem(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 < 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 int main(void) { /* redirect standard output to a file */ if (freopen("OUTPUT.FIL", "w", stdout) == NULL) fprintf(stderr, "error redirecting stdout\n"); /* this output will go to a file */ printf("This will go into a file."); /* close the standard output stream */ fclose(stdout); return 0; } 函数名: frexp 功 能: 把一个双精度数分解为尾数的指数 用 法: double frexp(double value, int *eptr); 程序例: #include #include 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 #include int main(void) { int i; printf("Input an integer: "); /* read an integer from the standard input stream */ 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 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 #include void showpos(FILE *stream); int main(void) { FILE *stream; fpos_t filepos; /* open a file for update */ stream = fopen("DUMMY.FIL", "w+"); /* save the file pointer position */ fgetpos(stream, &filepos); /* write some data to the file */ fprintf(stream, "This is a test"); /* show the current file position */ showpos(stream); /* set a new file position, display it */ if (fsetpos(stream, &filepos) == 0) showpos(stream); else { fprintf(stderr, "Error setting file \ pointer.\n"); exit(1); } /* close the file */ fclose(stream); return 0; } void showpos(FILE *stream) { fpos_t pos; /* display the current file pointer position of a stream */ fgetpos(stream, &pos); printf("File position: %ld\n", pos); } 函数名: fstat 功 能: 获取打开文件信息 用 法: int fstat(char *handle, struct stat *buff); 程序例: #include #include #include int main(void) { struct stat statbuf; FILE *stream; /* open a file for update */ if ((stream = fopen("DUMMY.FIL", "w+")) == NULL) { fprintf(stderr, "Cannot open output file.\n"); return(1); } fprintf(stream, "This is a test"); fflush(stream); /* get information about the file */ fstat(fileno(stream), &statbuf); fclose(stream); /* display the information returned */ 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 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 struct mystruct { int i; char ch; }; int main(void) { FILE *stream; struct mystruct s; if ((stream = fopen("TEST.$$$", "wb")) == NULL) /* open file TEST.$$$ */ { fprintf(stderr, "Cannot open output file.\n"); return 1; } s.i = 0; s.ch = ';A';; fwrite(&s, sizeof(s), 1, stream); /* write struct s to file */ fclose(stream); /* close file */ return 0; }

TOP

常用C语言库函数

函数名: getdate 功 能: 取DOS日期 用 法: void getdate(struct *dateblk); 程序例: #include #include int main(void) { struct date d; getdate(&d); printf("The current year is: %d\n", d.da_year); printf("The current day is: %d\n", d.da_day); printf("The current month is: %d\n", d.da_mon); return 0; } 函数名: getdefaultpalette 功 能: 返回调色板定义结构 用 法: struct palettetype *far getdefaultpalette(void); 程序例: #include #include #include #include int main(void) { /* request auto detection */ int gdriver = DETECT, gmode, errorcode; int i; /* structure for returning palette copy */ struct palettetype far *pal=(void *) 0; /* initialize graphics and local variables */ initgraph(&gdriver, &gmode, ""); /* read result of initialization */ errorcode = graphresult(); /* an error occurred */ if (errorcode != grOk) { printf("Graphics error: %s\n", grapherrormsg(errorcode)); printf("Press any key to halt:"); getch(); /* terminate with an error code */ exit(1); } setcolor(getmaxcolor()); /* return a pointer to the default palette */ pal = getdefaultpalette(); for (i=0; i<16; i++) { printf("colors[%d] = %d\n", i, pal->colors); getch(); } /* clean up */ getch(); closegraph(); return 0; } 函数名: getdisk 功 能: 取当前磁盘驱动器号 用 法: int getdisk(void); 程序例: #include #include int main(void) { int disk; disk = getdisk() + ';A';; printf("The current drive is: %c\n", disk); return 0; } 函数名: getdrivername 功 能: 返回指向包含当前图形驱动程序名字的字符串指针 用 法: char *getdrivename(void); 程序例: #include #include #include #include int main(void) { /* request auto detection */ int gdriver = DETECT, gmode, errorcode; /* stores the device driver name */ char *drivername; /* initialize graphics and local variables */ initgraph(&gdriver, &gmode, ""); /* read result of initialization */ errorcode = graphresult(); /* an error occurred */ if (errorcode != grOk) { printf("Graphics error: %s\n", grapherrormsg(errorcode)); printf("Press any key to halt:"); getch(); /* terminate with an error code */ exit(1); } setcolor(getmaxcolor()); /* get name of the device driver in use */ drivername = getdrivername(); /* for centering text on the screen */ settextjustify(CENTER_TEXT, CENTER_TEXT); /* output the name of the driver */ outtextxy(getmaxx() / 2, getmaxy() / 2, drivername); /* clean up */ getch(); closegraph(); return 0; } 函数名: getdta 功 能: 取磁盘传输地址 用 法: char far *getdta(void); 程序例: #include #include int main(void) { char far *dta; dta = getdta(); printf("The current disk transfer address is: %Fp\n", dta); return 0; } 函数名: getenv 功 能: 从环境中取字符串 用 法: char *getenv(char *envvar); 程序例: #include #include int main(void) { char *s; s=getenv("COMSPEC"); /* get the comspec environment parameter */ printf("Command processor: %s\n",s); /* display comspec parameter */ return 0; } 函数名: getfat, getfatd 功 能: 取文件分配表信息 用 法: void getfat(int drive, struct fatinfo *fatblkp); 程序例: #include #include int main(void) { struct fatinfo diskinfo; int flag = 0; printf("Please insert disk in drive A\n"); getchar(); getfat(1, &diskinfo); /* get drive information */ printf("\nDrive A: is "); switch((unsigned char) diskinfo.fi_fatid) { case 0xFD: printf("360K low density\n"); break; case 0xF9: printf("1.2 Meg high density\n"); break; default: printf("unformatted\n"); flag = 1; } if (!flag) { printf(" sectors per cluster %5d\n", diskinfo.fi_sclus); printf(" number of clusters %5d\n", diskinfo.fi_nclus); printf(" bytes per sector %5d\n", diskinfo.fi_bysec); } return 0; } 函数名: getfillpattern 功 能: 将用户定义的填充模式拷贝到内存中 用 法: void far getfillpattern(char far *upattern); 程序例: #include #include #include #include int main(void) { /* request auto detection */ int gdriver = DETECT, gmode, errorcode; int maxx, maxy; char pattern[8] = {0x00, 0x70, 0x20, 0x27, 0x25, 0x27, 0x04, 0x04}; /* initialize graphics and local variables */ initgraph(&gdriver, &gmode, ""); /* read result of initialization */ errorcode = graphresult(); if (errorcode != grOk) /* an error occurred */ { printf("Graphics error: %s\n", grapherrormsg(errorcode)); printf("Press any key to halt:"); getch(); exit(1); /* terminate with an error code */ } maxx = getmaxx(); maxy = getmaxy(); setcolor(getmaxcolor()); /* select a user defined fill pattern */ setfillpattern(pattern, getmaxcolor()); /* fill the screen with the pattern */ bar(0, 0, maxx, maxy); getch(); /* get the current user defined fill pattern */ getfillpattern(pattern); /* alter the pattern we grabbed */ pattern[4] -= 1; pattern[5] -= 3; pattern[6] += 3; pattern[7] -= 4; /* select our new pattern */ setfillpattern(pattern, getmaxcolor()); /* fill the screen with the new pattern */ bar(0, 0, maxx, maxy); /* clean up */ getch(); closegraph(); return 0; } 函数名: getfillsettings 功 能: 取得有关当前填充模式和填充颜色的信息 用 法: void far getfillsettings(struct fillsettingstype far *fillinfo); 程序例: #include #include #include #include / the names of the fill styles supported */ char *fname[] = { "EMPTY_FILL", "SOLID_FILL", "LINE_FILL", "LTSLASH_FILL", "SLASH_FILL", "BKSLASH_FILL", "LTBKSLASH_FILL", "HATCH_FILL", "XHATCH_FILL", "INTERLEAVE_FILL", "WIDE_DOT_FILL", "CLOSE_DOT_FILL", "USER_FILL" }; int main(void) { /* request auto detection */ int gdriver = DETECT, gmode, errorcode; struct fillsettingstype fillinfo; int midx, midy; char patstr[40], colstr[40]; /* initialize graphics and local variables */ initgraph(&gdriver, &gmode, ""); /* read result of initialization */ errorcode = graphresult(); if (errorcode != grOk) /* an error occurred */ { printf("Graphics error: %s\n", grapherrormsg(errorcode)); printf("Press any key to halt:"); getch(); exit(1); /* terminate with an error code */ } midx = getmaxx() / 2; midy = getmaxy() / 2; /* get information about current fill pattern and color */ getfillsettings(&fillinfo); /* convert fill information into strings */ sprintf(patstr, "%s is the fill style.", fname[fillinfo.pattern]); sprintf(colstr, "%d is the fill color.", fillinfo.color); /* display the information */ settextjustify(CENTER_TEXT, CENTER_TEXT); outtextxy(midx, midy, patstr); outtextxy(midx, midy+2*textheight("W"), colstr); /* clean up */ getch(); closegraph(); return 0; } 函数名: getftime 功 能: 取文件日期和时间 用 法: int getftime(int handle, struct ftime *ftimep); 程序例: #include #include int main(void) { FILE *stream; struct ftime ft; if ((stream = fopen("TEST.$$$", "wt")) == NULL) { fprintf(stderr, "Cannot open output file.\n"); return 1; } getftime(fileno(stream), &ft); printf("File time: %u:%u:%u\n", ft.ft_hour, ft.ft_min, ft.ft_tsec * 2); printf("File date: %u/%u/%u\n", ft.ft_month, ft.ft_day, ft.ft_year+1980); fclose(stream); return 0; } 函数名: getgraphmode 功 能: 返回当前图形模式 用 法: int far getgraphmode(void); 程序例: #include #include #include #include int main(void) { /* request auto detection */ int gdriver = DETECT, gmode, errorcode; int midx, midy, mode; char numname[80], modename[80]; /* initialize graphics and local variables */ initgraph(&gdriver, &gmode, ""); /* read result of initialization */ errorcode = graphresult(); /* an error occurred */ if (errorcode != grOk) { printf("Graphics error: %s\n", grapherrormsg(errorcode)); printf("Press any key to halt:"); getch(); /* terminate with an error code */ exit(1); } midx = getmaxx() / 2; midy = getmaxy() / 2; /* get mode number and name strings */ mode = getgraphmode(); sprintf(numname, "%d is the current mode number.", mode); sprintf(modename, "%s is the current graphics mode", getmodename(mode)); /* display the information */ settextjustify(CENTER_TEXT, CENTER_TEXT); outtextxy(midx, midy, numname); outtextxy(midx, midy+2*textheight("W"), modename); /* clean up */ getch(); closegraph(); return 0; } 函数名: getftime 功 能: 取文件日期和时间 用 法: int getftime(int handle, struct ftime *ftimep); 程序例: #include #include int main(void) { FILE *stream; struct ftime ft; if ((stream = fopen("TEST.$$$", "wt")) == NULL) { fprintf(stderr, "Cannot open output file.\n"); return 1; } getftime(fileno(stream), &ft); printf("File time: %u:%u:%u\n", ft.ft_hour, ft.ft_min, ft.ft_tsec * 2); printf("File date: %u/%u/%u\n", ft.ft_month, ft.ft_day, ft.ft_year+1980); fclose(stream); return 0; }

TOP

常用C语言库函数

函数名: raise 功 能: 向正在执行的程序发送一个信号 用 法: int raise(int sig); 程序例: #include int main(void) { int a, b; a = 10; b = 0; if (b == 0) /* preempt divide by zero error */ raise(SIGFPE); a = a / b; return 0; } 函数名: rand 功 能: 随机数发生器 用 法: void rand(void); 程序例: #include #include 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 #include #include #include int main(void) { char far *save_dta; char line[80], buffer[256]; struct fcb blk; int i, result; /* get user input file name for dta */ printf("Enter drive and file name (no path - i.e. a:file.dat)\n"); gets(line); /* put file name in fcb */ 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); /* open file with DOS FCB open file */ bdosptr(0x0F, &blk, 0); /* save old dta, and set new one */ save_dta = getdta(); setdta(buffer); /* set up info for the new dta */ blk.fcb_recsize = 128; blk.fcb_random = 0L; result = randbrd(&blk, 1); /* check results from randbrd */ if (!result) printf("Read OK\n\n"); else { perror("Error during read"); exit(1); } /* read in data from the new dta */ printf("The first 128 characters are:\n"); for (i=0; i<128; i++) putchar(buffer); /* restore previous dta */ setdta(save_dta); return 0; } 函数名: randbwr 功 能: 随机块写 用 法: int randbwr(struct fcp *fcbptr, int reccnt); 程序例: #include #include #include #include int main(void) { char far *save_dta; char line[80]; char buffer[256] = "RANDBWR test!"; struct fcb blk; int result; /* get new file name from user */ printf("Enter a file name to create (no path - ie. a:file.dat\n"); gets(line); /* parse the new file name to the dta */ parsfnm(line,&blk,1); printf("Drive #%d File: %s\n", blk.fcb_drive, blk.fcb_name); /* request DOS services to create file */ if (bdosptr(0x16, &blk, 0) == -1) { perror("Error creating file"); exit(1); } /* save old dta and set new dta */ save_dta = getdta(); setdta(buffer); /* write new records */ blk.fcb_recsize = 256; blk.fcb_random = 0L; result = randbwr(&blk, 1); if (!result) printf("Write OK\n"); else { perror("Disk error"); exit(1); } /* request DOS services to close the file */ if (bdosptr(0x10, &blk, 0) == -1) { perror("Error closing file"); exit(1); } /* reset the old dta */ setdta(save_dta); return 0; } 函数名: random 功 能: 随机数发生器 用 法: int random(int num); 程序例: #include #include #include /* prints a random number in the range 0 to 99 */ int main(void) { randomize(); printf("Random number in the 0-99 range: %d\n", random (100)); return 0; } 函数名: randomize 功 能: 初始化随机数发生器 用 法: void randomize(void); 程序例: #include #include #include 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 #include #include #include #include #include int main(void) { void *buf; int handle, bytes; buf = malloc(10); /* Looks for a file in the current directory named TEST.$$$ and attempts to read 10 bytes from it. To use this example you should create the file TEST.$$$ */ 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 #include #include int main(void) { char *str; /* allocate memory for string */ str = malloc(10); /* copy "Hello" into string */ 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 memory */ free(str); return 0; } 函数名: rectangle 功 能: 画一个矩形 用 法: void far rectangle(int left, int top, int right, int bottom); 程序例: #include #include #include #include int main(void) { /* request auto detection */ int gdriver = DETECT, gmode, errorcode; int left, top, right, bottom; /* initialize graphics and local variables */ initgraph(&gdriver, &gmode, ""); /* read result of initialization */ errorcode = graphresult(); if (errorcode != grOk) /* an error occurred */ { printf("Graphics error: %s\n", grapherrormsg(errorcode)); printf("Press any key to halt:"); getch(); exit(1); /* terminate with an error code */ } left = getmaxx() / 2 - 50; top = getmaxy() / 2 - 50; right = getmaxx() / 2 + 50; bottom = getmaxy() / 2 + 50; /* draw a rectangle */ rectangle(left,top,right,bottom); /* clean up */ getch(); closegraph(); return 0; } 函数名: registerbgidriver 功 能: 登录已连接进来的图形驱动程序代码 用 法: int registerbgidriver(void(*driver)(void)); 程序例: #include #include #include #include int main(void) { /* request auto detection */ int gdriver = DETECT, gmode, errorcode; /* register a driver that was added into graphics.lib */ errorcode = registerbgidriver(EGAVGA_driver); /* report any registration errors */ if (errorcode < 0) { printf("Graphics error: %s\n", grapherrormsg(errorcode)); printf("Press any key to halt:"); getch(); exit(1); /* terminate with an error code */ } /* initialize graphics and local variables */ initgraph(&gdriver, &gmode, ""); /* read result of initialization */ errorcode = graphresult(); if (errorcode != grOk) /* an error occurred */ { printf("Graphics error: %s\n", grapherrormsg(errorcode)); printf("Press any key to halt:"); getch(); exit(1); /* terminate with an error code */ } /* draw a line */ line(0, 0, getmaxx(), getmaxy()); /* clean up */ getch(); closegraph(); return 0; } 函数名: remove 功 能: 删除一个文件 用 法: int remove(char *filename); 程序例: #include int main(void) { char file[80]; /* prompt for file name to delete */ printf("File to delete: "); gets(file); /* delete the file */ if (remove(file) == 0) printf("Removed %s.\n",file); else perror("remove"); return 0; } 函数名: rename 功 能: 重命名文件 用 法: int rename(char *oldname, char *newname); 程序例: #include int main(void) { char oldname[80], newname[80]; /* prompt for file to rename and new name */ printf("File to rename: "); gets(oldname); printf("New name: "); gets(newname); /* Rename the file */ 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 #include #include #include int main(void) { /* request auto detection */ int gdriver = DETECT, gmode, errorcode; int x, y; /* initialize graphics and local variables */ initgraph(&gdriver, &gmode, ""); /* read result of initialization */ errorcode = graphresult(); if (errorcode != grOk) /* an error occurred */ { printf("Graphics error: %s\n", grapherrormsg(errorcode)); printf("Press any key to halt:"); getch(); exit(1); /* terminate with an error code */ } x = getmaxx() / 2; y = getmaxy() / 2; /* output a message */ settextjustify(CENTER_TEXT, CENTER_TEXT); outtextxy(x, y, "Press any key to exit graphics:"); getch(); /* restore system to text mode */ restorecrtmode(); printf("We';re now in text mode.\n"); printf("Press any key to return to graphics mode:"); getch(); /* return to graphics mode */ setgraphmode(getgraphmode()); /* output a message */ settextjustify(CENTER_TEXT, CENTER_TEXT); outtextxy(x, y, "We';re back in graphics mode."); outtextxy(x, y+textheight("W"), "Press any key to halt:"); /* clean up */ getch(); closegraph(); return 0; } 函数名: rewind 功 能: 将文件指针重新指向一个流的开头 用 法: int rewind(FILE *stream); 程序例: #include #include 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 #include #include #include #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; }

TOP

常用C语言库函数

函数名: sbrk 功 能: 改变数据段空间位置 用 法: char *sbrk(int incr); 程序例: #include #include 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 #include 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]; /* Input a label as a string of characters restricting to 20 characters */ printf("\n\nPlease enter a label for the chart: "); scanf("%20s", label); fflush(stdin); /* flush the input stream in case of bad input */ /* Input number of entries as an integer */ printf("How many entries will there be? (less than 20) "); scanf("%d", &entries); fflush(stdin); /* flush the input stream in case of bad input */ /* input a name restricting input to only letters upper or lower case */ for (loop=0;loop #include int main(void) { char *p; /* Looks for TLINK and returns a pointer to the path */ p = searchpath("TLINK.EXE"); printf("Search for TLINK.EXE : %s\n", p); /* Looks for non-existent file */ 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 #include #include #include int main(void) { /* request auto detection */ int gdriver = DETECT, gmode, errorcode; int midx, midy, i; int stangle = 45, endangle = 135; int xrad = 100, yrad = 50; /* initialize graphics and local variables */ initgraph(&gdriver, &gmode, ""); /* read result of initialization */ errorcode = graphresult(); if (errorcode != grOk) /* an error occurred */ { printf("Graphics error: %s\n", grapherrormsg(errorcode)); printf("Press any key to halt:"); getch(); exit(1); /* terminate with an error code */ } midx = getmaxx() / 2; midy = getmaxy() / 2; /* loop through the fill patterns */ for (i=EMPTY_FILL; i #include 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 #include #include #include int main(void) { /* select a driver and mode that supports */ /* multiple pages. */ int gdriver = EGA, gmode = EGAHI, errorcode; int x, y, 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\n", grapherrormsg(errorcode)); printf("Press any key to halt:"); getch(); exit(1); /* terminate with an error code */ } x = getmaxx() / 2; y = getmaxy() / 2; ht = textheight("W"); /* select the off screen page for drawing */ setactivepage(1); /* draw a line on page #1 */ line(0, 0, getmaxx(), getmaxy()); /* output a message on page #1 */ settextjustify(CENTER_TEXT, CENTER_TEXT); outtextxy(x, y, "This is page #1:"); outtextxy(x, y+ht, "Press any key to halt:"); /* select drawing to page #0 */ setactivepage(0); /* output a message on page #0 */ outtextxy(x, y, "This is page #0."); outtextxy(x, y+ht, "Press any key to view page #1:"); getch(); /* select page #1 as the visible page */ setvisualpage(1); /* clean up */ getch(); closegraph(); return 0; } 函数名: setallpallette 功 能: 按指定方式改变所有的调色板颜色 用 法: void far setallpallette(struct palette, far *pallette); 程序例: #include #include #include #include int main(void) { /* request auto detection */ int gdriver = DETECT, gmode, errorcode; struct palettetype pal; int color, maxcolor, ht; int y = 10; char msg[80]; /* initialize graphics and local variables */ initgraph(&gdriver, &gmode, ""); /* read result of initialization */ errorcode = graphresult(); if (errorcode != grOk) /* an error occurred */ { printf("Graphics error: %s\n", grapherrormsg(errorcode)); printf("Press any key to halt:"); getch(); exit(1); /* terminate with an error code */ } maxcolor = getmaxcolor(); ht = 2 * textheight("W"); /* grab a copy of the palette */ getpalette(&pal); /* display the default palette colors */ for (color=1; color<=maxcolor; color++) { setcolor(color); sprintf(msg, "Color: %d", color); outtextxy(1, y, msg); y += ht; } /* wait for a key */ getch(); /* black out the colors one by one */ for (color=1; color<=maxcolor; color++) { setpalette(color, BLACK); getch(); } /* restore the palette colors */ setallpalette(&pal); /* clean up */ getch(); closegraph(); return 0; } 函数名: setaspectratio 功 能: 设置图形纵横比 用 法: void far setaspectratio(int xasp, int yasp); 程序例: #include #include #include #include int main(void) { /* request auto detection */ int gdriver = DETECT, gmode, errorcode; int xasp, yasp, midx, midy; /* initialize graphics and local variables */ initgraph(&gdriver, &gmode, ""); /* read result of initialization */ errorcode = graphresult(); if (errorcode != grOk) /* an error occurred */ { printf("Graphics error: %s\n", grapherrormsg(errorcode)); printf("Press any key to halt:"); getch(); exit(1); /* terminate with an error code */ } midx = getmaxx() / 2; midy = getmaxy() / 2; setcolor(getmaxcolor()); /* get current aspect ratio settings */ getaspectratio(&xasp, &yasp); /* draw normal circle */ circle(midx, midy, 100); getch(); /* claer the screen */ cleardevice(); /* adjust the aspect for a wide circle */ setaspectratio(xasp/2, yasp); circle(midx, midy, 100); getch(); /* adjust the aspect for a narrow circle */ cleardevice(); setaspectratio(xasp, yasp/2); circle(midx, midy, 100); /* clean up */ getch(); closegraph(); return 0; } 函数名: setbkcolor 功 能: 用调色板设置当前背景颜色 用 法: void far setbkcolor(int color); 程序例: #include #include #include #include int main(void) { /* select a driver and mode that supports */ /* multiple background colors. */ int gdriver = EGA, gmode = EGAHI, errorcode; int bkcol, maxcolor, x, y; char msg[80]; /* initialize graphics and local variables */ initgraph(&gdriver, &gmode, ""); /* read result of initialization */ errorcode = graphresult(); if (errorcode != grOk) /* an error occurred */ { printf("Graphics error: %s\n", grapherrormsg(errorcode)); printf("Press any key to halt:"); getch(); exit(1); /* terminate with an error code */ } /* maximum color index supported */ maxcolor = getmaxcolor(); /* for centering text messages */ settextjustify(CENTER_TEXT, CENTER_TEXT); x = getmaxx() / 2; y = getmaxy() / 2; /* loop through the available colors */ for (bkcol=0; bkcol<=maxcolor; bkcol++) { /* clear the screen */ cleardevice(); /* select a new background color */ setbkcolor(bkcol); /* output a messsage */ if (bkcol == WHITE) setcolor(EGA_BLUE); sprintf(msg, "Background color: %d", bkcol); outtextxy(x, y, msg); getch(); } /* clean up */ closegraph(); return 0; } 函数名: setblock 功 能: 修改先前已分配的DOS存储段大小 用 法: int setblock(int seg, int newsize); 程序例: #include #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\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 /* BUFSIZ is defined in stdio.h */ char outbuf[BUFSIZ]; int main(void) { /* attach a buffer to the standard output stream */ setbuf(stdout, outbuf); /* put some characters into the buffer */ 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"); /* flush the output buffer */ fflush(stdout); return 0; } 函数名: setcbrk 功 能: 设置Control-break 用 法: int setcbrk(int value); 程序例: #include #include #include 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 #include #include #include int main(void) { /* select a driver and mode that supports */ /* multiple drawing colors. */ int gdriver = EGA, gmode = EGAHI, errorcode; int color, maxcolor, x, y; char msg[80]; /* initialize graphics and local variables */ initgraph(&gdriver, &gmode, ""); /* read result of initialization */ errorcode = graphresult(); if (errorcode != grOk) /* an error occurred */ { printf("Graphics error: %s\n", grapherrormsg(errorcode)); printf("Press any key to halt:"); getch(); exit(1); /* terminate with an error code */ } /* maximum color index supported */ maxcolor = getmaxcolor(); /* for centering text messages */ settextjustify(CENTER_TEXT, CENTER_TEXT); x = getmaxx() / 2; y = getmaxy() / 2; /* loop through the available colors */ for (color=1; color<=maxcolor; color++) { /* clear the screen */ cleardevice(); /* select a new background color */ setcolor(color); /* output a messsage */ sprintf(msg, "Color: %d", color); outtextxy(x, y, msg); getch(); } /* clean up */ closegraph(); return 0; } 函数名: setdate 功 能: 设置DOS日期 用 法: void setdate(struct date *dateblk); 程序例: #include #include #include 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 #include int main(void) { int save, disk, disks; /* save original drive */ save = getdisk(); /* print number of logic drives */ disks = setdisk(save); printf("%d logical drives on the system\n\n", disks); /* print the drive letters available */ 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 #include #include #include int main(void) { char line[80], far *save_dta; char buffer[256] = "SETDTA test!"; struct fcb blk; int result; /* get new file name from user */ printf("Enter a file name to create:"); gets(line); /* parse the new file name to the dta */ parsfnm(line, &blk, 1); printf("%d %s\n", blk.fcb_drive, blk.fcb_name); /* request DOS services to create file */ if (bdosptr(0x16, &blk, 0) == -1) { perror("Error creating file"); exit(1); } /* save old dta and set new dta */ save_dta = getdta(); setdta(buffer); /* write new records */ 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); } /* request DOS services to close the file */ if (bdosptr(0x10, &blk, 0) == -1) { perror("Error closing file"); exit(1); } /* reset the old dta */ setdta(save_dta); return 0; } 函数名: setfillpattern 功 能: 选择用户定义的填充模式 用 法: void far setfillpattern(char far *upattern, int color); 程序例: #include #include #include #include int main(void) { /* request auto detection */ int gdriver = DETECT, gmode, errorcode; int maxx, maxy; /* a user defined fill pattern */ char pattern[8] = {0x00, 0x70, 0x20, 0x27, 0x24, 0x24, 0x07, 0x00}; /* initialize graphics and local variables */ initgraph(&gdriver, &gmode, ""); /* read result of initialization */ errorcode = graphresult(); if (errorcode != grOk) /* an error occurred */ { printf("Graphics error: %s\n", grapherrormsg(errorcode)); printf("Press any key to halt:"); getch(); exit(1); /* terminate with an error code */ } maxx = getmaxx(); maxy = getmaxy(); setcolor(getmaxcolor()); /* select a user defined fill pattern */ setfillpattern(pattern, getmaxcolor()); /* fill the screen with the pattern */ bar(0, 0, maxx, maxy); /* clean up */ getch(); closegraph(); return 0; } 函数名: setfillstyle 功 能: 设置填充模式和颜色 用 法: void far setfillstyle(int pattern, int color); 程序例: #include #include #include #include #include /* the names of the fill styles supported */ char *fname[] = { "EMPTY_FILL", "SOLID_FILL", "LINE_FILL", "LTSLASH_FILL", "SLASH_FILL", "BKSLASH_FILL", "LTBKSLASH_FILL", "HATCH_FILL", "XHATCH_FILL", "INTERLEAVE_FILL", "WIDE_DOT_FILL", "CLOSE_DOT_FILL", "USER_FILL" }; int main(void) { /* request auto detection */ int gdriver = DETECT, gmode, errorcode; int style, midx, midy; char stylestr[40]; /* initialize graphics and local variables */ initgraph(&gdriver, &gmode, ""); /* read result of initialization */ errorcode = graphresult(); if (errorcode != grOk) /* an error occurred */ { printf("Graphics error: %s\n", grapherrormsg(errorcode)); printf("Press any key to halt:"); getch(); exit(1); /* terminate with an error code */ } midx = getmaxx() / 2; midy = getmaxy() / 2; for (style = EMPTY_FILL; style < USER_FILL; style++) { /* select the fill style */ setfillstyle(style, getmaxcolor()); /* convert style into a string */ strcpy(stylestr, fname[style]); /* fill a bar */ bar3d(0, 0, midx-10, midy, 0, 0); /* output a message */ outtextxy(midx, midy, stylestr); /* wait for a key */ getch(); cleardevice(); } /* clean up */ getch(); closegraph(); return 0; } 函数名: setftime 功 能: 设置文件日期和时间 用 法: int setftime(int handle, struct ftime *ftimep); 程序例: #include #include #include #include int main(void) { struct ftime filet; FILE *fp; if ((fp = fopen("TEST.$$$", "w")) == NULL) { perror("Error:"); exit(1); } fprintf(fp, "testing...\n"); /* load ftime structure with new time and date */ filet.ft_tsec = 1; filet.ft_min = 1; filet.ft_hour = 1; filet.ft_day = 1; filet.ft_month = 1; filet.ft_year = 21; /* show current directory for time and date */ system("dir TEST.$$$"); /* change the time and date stamp*/ setftime(fileno(fp), &filet); /* close and remove the temporary file */ fclose(fp); system("dir TEST.$$$"); unlink("TEST.$$$"); return 0; } 函数名: setgraphbufsize 功 能: 改变内部图形缓冲区的大小 用 法: unsigned far setgraphbufsize(unsigned bufsize); 程序例: #include #include #include #include #define BUFSIZE 1000 /* internal graphics buffer size */ int main(void) { /* request auto detection */ int gdriver = DETECT, gmode, errorcode; int x, y, oldsize; char msg[80]; /* set the size of the internal graphics buffer */ /* before making a call to initgraph. */ oldsize = setgraphbufsize(BUFSIZE); /* initialize graphics and local variables */ initgraph(&gdriver, &gmode, ""); /* read result of initialization */ errorcode = graphresult(); if (errorcode != grOk) /* an error occurred */ { printf("Graphics error: %s\n", grapherrormsg(errorcode)); printf("Press any key to halt:"); getch(); exit(1); /* terminate with an error code */ } x = getmaxx() / 2; y = getmaxy() / 2; /* output some messages */ 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); /* clean up */ getch(); closegraph(); return 0; } 函数名: setgraphmode 功 能: 将系统设置成图形模式且清屏 用 法: void far setgraphmode(int mode); 程序例: #include #include #include #include int main(void) { /* request auto detection */ int gdriver = DETECT, gmode, errorcode; int x, y; /* initialize graphics and local variables */ initgraph(&gdriver, &gmode, ""); /* read result of initialization */ errorcode = graphresult(); if (errorcode != grOk) /* an error occurred */ { printf("Graphics error: %s\n", grapherrormsg(errorcode)); printf("Press any key to halt:"); getch(); exit(1); /* terminate with an error code */ } x = getmaxx() / 2; y = getmaxy() / 2; /* output a message */ settextjustify(CENTER_TEXT, CENTER_TEXT); outtextxy(x, y, "Press any key to exit graphics:"); getch(); /* restore system to text mode */ restorecrtmode(); printf("We';re now in text mode.\n"); printf("Press any key to return to graphics mode:"); getch(); /* return to graphics mode */ setgraphmode(getgraphmode()); /* output a message */ settextjustify(CENTER_TEXT, CENTER_TEXT); outtextxy(x, y, "We';re back in graphics mode."); outtextxy(x, y+textheight("W"), "Press any key to halt:"); /* clean up */ getch(); closegraph(); return 0; } 函数名: sound 功 能: 以指定频率打开PC扬声器 用 法: void sound(unsigned frequency); 程序例: /* Emits a 7-Hz tone for 10 seconds. Your PC may not be able to emit a 7-Hz tone. */ #include int main(void) { sound(7); delay(10000); nosound(); return 0; } 函数名: spawnl 功 能: 创建并运行子程序 用 法: int spawnl(int mode, char *pathname, char *arg0, arg1, ... argn, NULL); 程序例: #include #include #include 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); 程序例: /* spawnle() example */ #include #include #include 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 #include 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 #include 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 #include #include 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 #include 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]; /* Input a label as a string of characters restricting to 20 characters */ printf("\n\nPlease enter a label for the chart: "); scanf("%20s", label); fflush(stdin); /* flush the input stream in case of bad input */ /* Input number of entries as an integer */ printf("How many entries will there be? (less than 20) "); scanf("%d", &entries); fflush(stdin); /* flush the input stream in case of bad input */ /* input a name restricting input to only letters upper or lower case */ for (loop=0;loop #include #include #define FILENAME "TEST.$$$" int main(void) { struct stat statbuf; FILE *stream; /* open a file for update */ if ((stream = fopen(FILENAME, "w+")) == NULL) { fprintf(stderr, "Cannot open output file.\n"); return(1); } /* get information about the file */ stat(FILENAME, &statbuf); fclose(stream); /* display the information returned */ 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 #include int main(void) { float x; double y = 1.5e-100; printf("Status 87 before error: %x\n", _status87()); x = y; /* <-- force an error to occur */ y = x; printf("Status 87 after error : %x\n", _status87()); return 0; } 函数名: stime 功 能: 设置时间 用 法: int stime(long *tp); 程序例: #include #include #include 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 #include 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 #include 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 #include 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 #include 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 #include 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 #include 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 #include #include 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 #include #include 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 #include 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 #include int main(void) { char *buffer; buffer = strerror(errno); printf("Error: %s\n", buffer); return 0; } 函数名: strcmpi 功 能: 将一个串与另一个比较, 不管大小写 用 法: int strcmpi(char *str1, char *str2); 程序例: #include #include 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; } 函数名: strncmp 功 能: 串比较 用 法: int strncmp(char *str1, char *str2, int maxlen); 程序例: #include #include 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 #include 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 #include 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 #include 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 #include 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 #include 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 #include 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 #include 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 #include 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 #include #include 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 #include 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 #include 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 #include int main(void) { char input[16] = "abc,d"; char *p; /* strtok places a NULL terminator in front of the token, if found */ p = strtok(input, ","); if (p) printf("%s\n", p); /* A second call to strtok using a NULL as the first parameter returns a pointer to the character following the token */ p = strtok(NULL, ","); if (p) printf("%s\n", p); return 0; } 函数名: strtol 功 能: 将串转换为长整数 用 法: long strtol(char *str, char **endptr, int base); 程序例: #include #include int main(void) { char *string = "87654321", *endptr; long lnumber; /* strtol converts string to long integer */ lnumber = strtol(string, &endptr, 10); printf("string = %s long = %ld\n", string, lnumber); return 0; } 函数名: strupr 功 能: 将串中的小写字母转换为大写字母 用 法: char *strupr(char *str); 程序例: #include #include int main(void) { char *string = "abcdefghijklmnopqrstuvwxyz", *ptr; /* converts string to upper case characters */ ptr = strupr(string); printf("%s\n", ptr); return 0; } 函数名: swab 功 能: 交换字节 用 法: void swab (char *from, char *to, int nbytes); 程序例: #include #include #include 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 #include int main(void) { printf("About to spawn command.com and run a DOS command\n"); system("dir"); return 0; }

TOP

常用C语言库函数

函数名: wherex 功 能: 返回窗口内水平光标位置 用 法: int wherex(void); 程序例: #include 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 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 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 #include #include #include #include #include int main(void) { int handle; char string[40]; int length, res; /* Create a file named "TEST.$$$" in the current directory and write a string to it. If "TEST.$$$" already exists, it will be overwritten. */ 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; }

TOP

常用C语言库函数

有用,收下咯!慢慢研究!

TOP

返回列表 回复 发帖