C语言库函数 (B类字母)

  [ 发表日期:2002-1-4 9:28:46 ]
  函数名: bar
  功 能: 画一个二维条形图
  用 法: void far bar(int left, int top, int right, int bottom);
  程序例:
  #include <graphics.h>
  #include <stdlib.h>
  #include <stdio.h>
  #include <conio.h>
  int main(void)
  {
  /* request auto detection */
  int gdriver = DETECT, gmode, errorcode;
  int midx, midy, i;
  /* initialize graphics and local variables */
  initgraph(&gdriver, &gmode, "");
  /* read result of initialization */
  errorcode = graphresult();
  if (errorcode != grOk) /* an error occurred */
  {
  printf("Graphics error: %s\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<USER_FILL; i++)
  {
  /* set the fill style */
  setfillstyle(i, getmaxcolor());
  /* draw the bar */
  bar(midx-50, midy-50, midx+50,
  midy+50);
  getch();
  }
  /* clean up */
  closegraph();
  return 0;
  }
  函数名: bar3d
  功 能: 画一个三维条形图
  用 法: void far bar3d(int left, int top, int right, int bottom,
  int depth, int topflag);
  程序例:
  #include <graphics.h>
  #include <stdlib.h>
  #include <stdio.h>
  #include <conio.h>
  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<USER_FILL; i++)
  {
  /* set the fill style */
  setfillstyle(i, getmaxcolor());
  /* draw the 3-d bar */
  bar3d(midx-50, midy-50, midx+50, midy+50, 10, 1);
  getch();
  }
  /* clean up */
  closegraph();
  return 0;
  }
  函数名: bdos
  功 能: DOS系统调用
  用 法: int bdos(int dosfun, unsigned dosdx, unsigned dosal);
  程序例:
  #include <stdio.h>
  #include <dos.h>
  /* 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 <string.h>
  
   #include <stdio.h>
  #include <dir.h>
  #include <dos.h>
  #include <errno.h>
  #include <stdlib.h>
  #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 <bios.h>
  #include <conio.h>
  #define COM1 0
  #define DATA_READY 0x100
  #define TRUE 1
  #define FALSE 0
  #define SETTINGS ( 0x80 0x02 0x00 0x00)
  int main(void)
  {
  int in, out, status, DONE = FALSE;
  bioscom(0, SETTINGS, COM1);
  cprintf("... BIOSCOM [ESC] to exit ...\n");
  while (!DONE)
  {
  status = bioscom(3, 0, COM1);
  if (status & DATA_READY)
  if ((out = bioscom(2, 0, COM1) & 0x7F) != 0)
  putch(out);
  if (kbhit())
  {
  if ((in = getch()) == '\x1B')
  DONE = TRUE;
  bioscom(1, in, COM1);
  }
  }
  return 0;
  }
  函数名: biosdisk
  功 能: 软硬盘I/O
  用 法: int biosdisk(int cmd, int drive, int head, int track, int sector
  int nsects, void *buffer);
  程序例:
  #include <bios.h>
  #include <stdio.h>
  int main(void)
  {
  int result;
  char buffer[512];
  printf("Testing to see if drive a: is ready\n");
  result = biosdisk(4,0,0,0,0,1,buffer);
  result &= 0x02;
  (result) ? (printf("Drive A: Ready\n")) :
  (printf("Drive A: Not Ready\n"));
  return 0;
  }
  函数名: biosequip
  功 能: 检查设备
  用 法: int biosequip(void);
  程序例:
  #include <bios.h>
  #include <stdio.h>
  int main(void)
  {
  int result;
  char buffer[512];
  printf("Testing to see if drive a: is ready\n");
  result = biosdisk(4,0,0,0,0,1,buffer);
  result &= 0x02;
  (result) ? (printf("Drive A: Ready\n")) :
  (printf("Drive A: Not Ready\n"));
  return 0;
  }
  函数名: bioskey
  功 能: 直接使用BIOS服务的键盘接口
  用 法: int bioskey(int cmd);
  程序例:
  #include <stdio.h>
  #include <bios.h>
  #include <ctype.h>
  #define RIGHT 0x01
  #define LEFT 0x02
  #define CTRL 0x04
  #define ALT 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 <stdio.h>
  #include <bios.h>
  int 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 <stdio.h>
  #include <conio.h>
  #include <bios.h>
  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 <stdio.h>
  #include <bios.h>
  #include <time.h>
  #include <conio.h>
  int main(void)
  {
  long bios_time;
  clrscr();
  cprintf("The number of clock ticks since midnight is:\r\n");
  cprintf("The number of seconds since midnight is:\r\n");
  cprintf("The number of minutes since midnight is:\r\n");
  cprintf("The number of hours since midnight is:\r\n");
  cprintf("\r\nPress any key to quit:");
  while(!kbhit())
  {
  bios_time = biostime(0, 0L);
  gotoxy(50, 1);
  cprintf("%lu", bios_time);
  gotoxy(50, 2);
  cprintf("%.4f", bios_time / CLK_TCK);
  gotoxy(50, 3);
  cprintf("%.4f", bios_time / CLK_TCK / 60);
  gotoxy(50, 4);
  cprintf("%.4f", bios_time / CLK_TCK / 3600);
  }
  return 0;
  }
  函数名: brk
  功 能: 改变数据段空间分配
  用 法: int brk(void *endds);
  程序例:
  #include <stdio.h>
  #include <alloc.h>
  int main(void)
  {
  char *ptr;
  printf("Changing allocation with brk()\n");
  ptr = malloc(1);
  printf("Before brk() call: %lu bytes free\n", coreleft());
  
   brk(ptr+1000);
  printf(" After brk() call: %lu bytes free\n", coreleft());
  return 0;
  }
  函数名: bsearch
  功 能: 二分法搜索
  用 法: void *bsearch(const void *key, const void *base, size_t *nelem,
  size_t width, int(*fcmp)(const void *, const *));
  程序例:
  #include <stdlib.h>
  #include <stdio.h>
  #define NELEMS(arr) (sizeof(arr) / sizeof(arr[0]))
  int numarray[] = {123, 145, 512, 627, 800, 933};
  int numeric (const int *p1, const int *p2)
  {
  return(*p1 - *p2);
  }
  int lookup(int key)
  {
  int *itemptr;
  /* 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;
  }