1  /  4  页   1234 跳转 查看:11002

c语言库函数共享

c语言库函数共享

o开头

函数名: open 
功  能: 打开一个文件用于读或写 
用  法: int open(char *pathname, int access[, int permiss]); 
程序例: 
#include <string.h> 
#include <stdio.h> 
#include <fcntl.h> 
#include <io.h> 

int main(void) 

  int handle; 
  char msg[] = "Hello world"; 

  if ((handle = open("TEST.$$$", O_CREAT | O_TEXT)) == -1) 
  { 
      perror("Error:"); 
      return 1; 
  } 
  write(handle, msg, strlen(msg)); 
  close(handle); 
  return 0; 

 
 

函数名: outport 
功  能: 输出整数到硬件端口中 
用  法: void outport(int port, int value); 
程序例: 

#include <stdio.h> 
#include <dos.h> 

int main(void) 

  int value = 64; 
  int port = 0; 

  outportb(port, value); 
  printf("Value %d sent to port number %d\n", value, port); 
  return 0; 

 
 

函数名: outportb 
功  能: 输出字节到硬件端口中 
用  法: void outportb(int port, char byte); 
程序例: 

#include <stdio.h> 
#include <dos.h> 

int main(void) 

  int value = 64; 
  int port = 0; 

  outportb(port, value); 
  printf("Value %d sent to port number %d\n", value, port); 
  return 0; 

 
 

函数名: outtext 
功  能: 在视区显示一个字符串 
用  法: void far outtext(char far *textstring); 
程序例: 

#include <graphics.h> 
#include <stdlib.h> 
#include <stdio.h> 
#include <conio.h> 

int main(void) 

  /* 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; 

  /* move the C.P. to the center of the screen */ 
  moveto(midx, midy); 

  /* output text starting at the C.P. */ 
  outtext("This "); 
  outtext("is "); 
  outtext("a "); 
  outtext("test."); 

  /* clean up */ 
  getch(); 
  closegraph(); 
  return 0; 

 
 

函数名: outtextxy 
功  能: 在指定位置显示一字符串 
用  法: void far outtextxy(int x, int y, char *textstring); 
程序例: 

#include <graphics.h> 
#include <stdlib.h> 
#include <stdio.h> 
#include <conio.h> 

int main(void) 

  /* 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; 

  /* output text at the center of the screen*/ 
  /* Note: the C.P. doesn't get changed.*/ 
  outtextxy(midx, midy, "This is a test."); 

  /* clean up */ 
  getch(); 
  closegraph(); 
  return 0; 
}
 

回复:c语言库函数共享

p开头

函数名: parsfnm 
功  能: 分析文件名 
用  法: char *parsfnm (char *cmdline, struct fcb *fcbptr, int option); 
程序例: 

#include <process.h> 
#include <string.h> 
#include <stdio.h> 
#include <dos.h> 

int main(void) 

  char line[80]; 
  struct fcb blk; 

  /* get file name */ 
  printf("Enter drive and file name (no path - ie. aile.dat)\n"); 
  gets(line); 

  /* put file name in fcb */ 
  if (parsfnm(line, &blk, 1) == NULL) 
      printf("Error in parsfm call\n"); 
  else 
      printf("Drive #%d  Name: %11s\n", blk.fcb_drive, blk.fcb_name); 

  return 0; 

 
 

函数名: peek 
功  能: 检查存储单元 
用  法: int peek(int segment, unsigned offset); 
程序例: 

#include <stdio.h> 
#include <conio.h> 
#include <dos.h> 

int main(void) 

  int value = 0; 

  printf("The current status of your keyboard is:\n"); 
  value = peek(0x0040, 0x0017); 
  if (value & 1) 
      printf("Right shift on\n"); 
  else 
      printf("Right shift off\n"); 

  if (value & 2) 
      printf("Left shift on\n"); 
  else 
      printf("Left shift off\n"); 

  if (value & 4) 
      printf("Control key on\n"); 
  else 
      printf("Control key off\n"); 

  if (value & 8) 
      printf("Alt key on\n"); 
  else 
      printf("Alt key off\n"); 

  if (value & 16) 
      printf("Scroll lock on\n"); 
  else 
      printf("Scroll lock off\n"); 

  if (value & 32) 
      printf("Num lock on\n"); 
  else 
      printf("Num lock off\n"); 

  if (value & 64) 
      printf("Caps lock on\n"); 
  else 
      printf("Caps lock off\n"); 

  return 0; 

 
 

函数名: peekb 
功  能: 检查存储单元 
用  法: char peekb (int segment, unsigned offset); 
程序例: 

#include <stdio.h> 
#include <conio.h> 
#include <dos.h> 

int main(void) 

  int value = 0; 

  printf("The current status of your keyboard is:\n"); 
  value = peekb(0x0040, 0x0017); 
  if (value & 1) 
      printf("Right shift on\n"); 
  else 
      printf("Right shift off\n"); 

  if (value & 2) 
      printf("Left shift on\n"); 
  else 
      printf("Left shift off\n"); 

  if (value & 4) 
      printf("Control key on\n"); 
  else 
      printf("Control key off\n"); 

  if (value & 8) 
      printf("Alt key on\n"); 
  else 
      printf("Alt key off\n"); 

  if (value & 16) 
      printf("Scroll lock on\n"); 
  else 
      printf("Scroll lock off\n"); 

  if (value & 32) 
      printf("Num lock on\n"); 
  else 
      printf("Num lock off\n"); 

  if (value & 64) 
      printf("Caps lock on\n"); 
  else 
      printf("Caps lock off\n"); 

  return 0; 

 
 

函数名: perror 
功  能: 系统错误信息 
用  法: void perror(char *string); 
程序例: 

#include <stdio.h> 

int main(void) 

  FILE *fp; 

  fp = fopen("perror.dat", "r"); 
  if (!fp) 
      perror("Unable to open file for reading"); 
  return 0; 

 
 

函数名: pieslice 
功  能: 绘制并填充一个扇形 
用  法: void far pieslice(int x, int stanle, int endangle, int radius); 
程序例: 

#include <graphics.h> 
#include <stdlib.h> 
#include <stdio.h> 
#include <conio.h> 

int main(void) 

  /* request auto detection */ 
  int gdriver = DETECT, gmode, errorcode; 
  int midx, midy; 
  int stangle = 45, endangle = 135, 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; 

  /* set fill style and draw a pie slice */ 
  setfillstyle(EMPTY_FILL, getmaxcolor()); 
  pieslice(midx, midy, stangle, endangle, radius); 

  /* clean up */ 
  getch(); 
  closegraph(); 
  return 0; 

 
 

函数名: poke 
功  能: 存值到一个给定存储单元 
用  法: void poke(int segment, int offset, int value); 
程序例: 

#include <dos.h> 
#include <conio.h> 

int main(void) 

  clrscr(); 
  cprintf("Make sure the scroll lock key is off and press any key\r\n"); 
  getch(); 
  poke(0x0000,0x0417,16); 
  cprintf("The scroll lock is now on\r\n"); 
  return 0; 

 
 

函数名: pokeb 
功  能: 存值到一个给定存储单元 
用  法: void pokeb(int segment, int offset, char value); 
程序例: 

#include <dos.h> 
#include <conio.h> 

int main(void) 

  clrscr(); 
  cprintf("Make sure the scroll lock key is off and press any key\r\n"); 
  getch(); 
  pokeb(0x0000,0x0417,16); 
  cprintf("The scroll lock is now on\r\n"); 
  return 0; 

 
 

函数名: poly 
功  能: 根据参数产生一个多项式 
用  法: double poly(double x, int n, double c[]); 
程序例: 

#include <stdio.h> 
#include <math.h> 

/* polynomial:  x**3 - 2x**2 + 5x - 1 */ 

int main(void) 

  double array[] = { -1.0, 5.0, -2.0, 1.0 }; 
  double result; 

  result = poly(2.0, 3, array); 
  printf("The polynomial: x**3 - 2.0x**2 + 5x - 1 at 2.0 is %lf\n", 
          result); 
  return 0; 

 
 

函数名: pow 
功  能: 指数函数(x的y次方) 
用  法: double pow(double x, double y); 
程序例: 

#include <math.h> 
#include <stdio.h> 

int main(void) 

  double x = 2.0, y = 3.0; 

  printf("%lf raised to %lf is %lf\n", x, y, pow(x, y)); 
  return 0; 

 

函数名: pow10 
功  能: 指数函数(10的p次方) 
用  法: double pow10(int p); 
程序例: 

#include <math.h> 
#include <stdio.h> 

int main(void) 

  double p = 3.0; 

  printf("Ten raised to %lf is %lf\n", p, pow10(p)); 
  return 0; 

 
 

函数名: printf 
功  能: 产生格式化输出的函数 
用  法: int printf(char *format...); 
程序例: 

#include <stdio.h> 
#include <string.h> 

#define I 555 
#define R 5.5 

int main(void) 

  int i,j,k,l; 
  char buf[7]; 
  char *prefix = buf; 
  char tp[20]; 
  printf("prefix  6d      6o      8x        10.2e        " 
          "10.2f\n"); 
  strcpy(prefix,"%"); 
  for (i = 0; i < 2; i++) 
  { 
      for (j = 0; j < 2; j++) 
        for (k = 0; k < 2; k++) 
    for (l = 0; l < 2; l++) 
            { 
              if (i==0)  strcat(prefix,"-"); 
              if (j==0)  strcat(prefix,"+"); 
              if (k==0)  strcat(prefix,"#"); 
              if (l==0)  strcat(prefix,"0"); 
              printf("%5s |",prefix); 
              strcpy(tp,prefix); 
              strcat(tp,"6d |"); 
              printf(tp,I); 
              strcpy(tp,""); 
              strcpy(tp,prefix); 
              strcat(tp,"6o |"); 
              printf(tp,I); 
              strcpy(tp,""); 
              strcpy(tp,prefix); 
              strcat(tp,"8x |"); 
              printf(tp,I); 
              strcpy(tp,""); 
              strcpy(tp,prefix); 
        strcat(tp,"10.2e |"); 
        printf(tp,R); 
        strcpy(tp,prefix); 
        strcat(tp,"10.2f |"); 
        printf(tp,R); 
        printf("  \n"); 
        strcpy(prefix,"%"); 
    } 
      } 
  return 0; 

 
 

函数名: putc 
功  能: 输出一字符到指定流中 
用  法: int putc(int ch, FILE *stream); 
程序例: 

#include <stdio.h> 

int main(void) 

  char msg[] = "Hello world\n"; 
  int i = 0; 

  while (msg
      putc(msg[i++], stdout); 
  return 0; 

 
 

函数名: putch 
功  能: 输出字符到控制台 
用  法: int putch(int ch); 
程序例: 

#include <stdio.h> 
#include <conio.h> 

int main(void) 

  char ch = 0; 

  printf("Input a string:"); 
  while ((ch != '\r')) 
  { 
      ch = getch(); 
      putch(ch); 
  } 
  return 0; 

 
 

函数名: putchar 
功  能: 在stdout上输出字符 
用  法: int putchar(int ch); 
程序例: 

#include <stdio.h> 

/* define some box-drawing characters */ 
#define LEFT_TOP  0xDA 
#define RIGHT_TOP 0xBF 
#define HORIZ    0xC4 
#define VERT      0xB3 
#define LEFT_BOT  0xC0 
#define RIGHT_BOT 0xD9 

int main(void) 

  char i, j; 

  /* draw the top of the box */ 
  putchar(LEFT_TOP); 
  for (i=0; i<10; i++) 
      putchar(HORIZ); 
  putchar(RIGHT_TOP); 
  putchar('\n'); 

  /* draw the middle */ 
  for (i=0; i<4; i++) 
  { 
      putchar(VERT); 
      for (j=0; j<10; j++) 
        putchar(' '); 
      putchar(VERT); 
      putchar('\n'); 
  } 

  /* draw the bottom */ 
  putchar(LEFT_BOT); 
  for (i=0; i<10; i++) 
      putchar(HORIZ); 
  putchar(RIGHT_BOT); 
  putchar('\n'); 

  return 0; 

 
 

函数名: putenv 
功  能: 把字符串加到当前环境中 
用  法: int putenv(char *envvar); 
程序例: 

#include <stdio.h> 
#include <stdlib.h> 
#include <alloc.h> 
#include <string.h> 
#include <dos.h> 

int main(void) 

  char *path, *ptr; 
  int i = 0; 

  /* get the current path environment */ 
  ptr = getenv("PATH"); 

  /* set up new path */ 
  path = malloc(strlen(ptr)+15); 
  strcpy(path,"PATH="); 
  strcat(path,ptr); 
  strcat(path,";c:\\temp"); 

  /* replace the current path and display current environment */ 
  putenv(path); 
  while (environ
      printf("%s\n",environ[i++]); 

  return 0; 

 
 

函数名: putimage 
功  能: 在屏幕上输出一个位图 
用  法: void far putimage(int x, int y, void far *bitmap, int op); 
程序例: 

#include <graphics.h> 
#include <stdlib.h> 
#include <stdio.h> 
#include <conio.h> 

#define ARROW_SIZE 10 

void draw_arrow(int x, int y); 

int main(void) 

  /* request autodetection */ 
  int gdriver = DETECT, gmode, errorcode; 
  void *arrow; 
  int x, y, maxx; 
  unsigned int size; 

  /* 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(); 
  x = 0; 
  y = getmaxy() / 2; 

  /* draw the image to be grabbed */ 
  draw_arrow(x, y); 

  /* calculate the size of the image */ 
  size = imagesize(x, y-ARROW_SIZE, x+(4*ARROW_SIZE), y+ARROW_SIZE); 

  /* allocate memory to hold the image */ 
  arrow = malloc(size); 

  /* grab the image */ 
  getimage(x, y-ARROW_SIZE, x+(4*ARROW_SIZE), y+ARROW_SIZE, arrow); 

  /* repeat until a key is pressed */ 
  while (!kbhit()) 
  { 
      /* erase old image */ 
      putimage(x, y-ARROW_SIZE, arrow, XOR_PUT); 

      x += ARROW_SIZE; 
      if (x >= maxx) 
          x = 0; 

      /* plot new image */ 
      putimage(x, y-ARROW_SIZE, arrow, XOR_PUT); 
  } 

  /* clean up */ 
  free(arrow); 
  closegraph(); 
  return 0; 


void draw_arrow(int x, int y) 

  /* draw an arrow on the screen */ 
  moveto(x, y); 
  linerel(4*ARROW_SIZE, 0); 
  linerel(-2*ARROW_SIZE, -1*ARROW_SIZE); 
  linerel(0, 2*ARROW_SIZE); 
  linerel(2*ARROW_SIZE, -1*ARROW_SIZE); 

 
 

函数名: putpixel 
功  能: 在指定位置画一像素 
用  法: void far putpixel (int x, int y, int pixelcolor); 
程序例: 

#include <graphics.h> 
#include <stdlib.h> 
#include <stdio.h> 
#include <conio.h> 
#include <dos.h> 

#define PIXEL_COUNT 1000 
#define DELAY_TIME  100  /* in milliseconds */ 

int main(void) 

  /* request autodetection */ 
  int gdriver = DETECT, gmode, errorcode; 
  int i, x, y, color, maxx, maxy, maxcolor, seed; 

  /* 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() + 1; 
  maxy = getmaxy() + 1; 
  maxcolor = getmaxcolor() + 1; 

  while (!kbhit()) 
  { 
      /* seed the random number generator */ 
      seed = random(32767); 
      srand(seed); 
      for (i=0; i<PIXEL_COUNT; i++) 
      { 
  x = random(maxx); 
        y = random(maxy); 
        color = random(maxcolor); 
        putpixel(x, y, color); 
      } 

      delay(DELAY_TIME); 
      srand(seed); 
      for (i=0; i<PIXEL_COUNT; i++) 
      { 
  x = random(maxx); 
  y = random(maxy); 
  color = random(maxcolor); 
  if (color == getpixel(x, y)) 
    putpixel(x, y, 0); 
      } 
  } 

  /* clean up */ 
  getch(); 
  closegraph(); 
  return 0; 

 
 

函数名: puts 
功  能: 送一字符串到流中 
用  法: int puts(char *string); 
程序例: 

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

  char string[] = "This is an example output string\n"; 

  puts(string); 
  return 0; 

 
 

函数名: puttext 
功  能: 将文本从存储区拷贝到屏幕 
用  法: int puttext(int left, int top, int right, int bottom, void *source); 
程序例: 

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

  char buffer[512]; 

  /* put some text to the console */ 
  clrscr(); 
  gotoxy(20, 12); 
  cprintf("This is a test.  Press any key to continue ..."); 
  getch(); 

  /* grab screen contents */ 
  gettext(20, 12, 36, 21,buffer); 
  clrscr(); 

  /* put selected characters back to the screen */ 
  gotoxy(20, 12); 
  puttext(20, 12, 36, 21, buffer); 
  getch(); 

  return 0; 

 
 

函数名: putw 
功  能: 把一字符或字送到流中 
用  法: int putw(int w, FILE *stream); 
程序例: 

#include <stdio.h> 
#include <stdlib.h> 

#define FNAME "test.$$$" 

int main(void) 

  FILE *fp; 
  int word; 

  /* place the word in a file */ 
  fp = fopen(FNAME, "wb"); 
  if (fp == NULL) 
  { 
      printf("Error opening file %s\n", FNAME); 
      exit(1); 
  } 

  word = 94; 
  putw(word,fp); 
  if (ferror(fp)) 
      printf("Error writing to file\n"); 
  else 
      printf("Successful write\n"); 
  fclose(fp); 

  /* reopen the file */ 
  fp = fopen(FNAME, "rb"); 
  if (fp == NULL) 
  { 
      printf("Error opening file %s\n", FNAME); 
      exit(1); 
  } 

  /* extract the word */ 
  word = getw(fp); 
  if (ferror(fp)) 
      printf("Error reading file\n"); 
  else 
      printf("Successful read: word = %d\n", word); 

  /* clean up */ 
  fclose(fp); 
  unlink(FNAME); 

  return 0; 
}
 

回复:c语言库函数共享

q开头

函数名: qsort
功  能: 使用快速排序例程进行排序
用  法: void qsort(void *base, int nelem, int width, int (*fcmp)());
程序例: 
#include <stdio.h>
#include <stdlib.h>
#include <string.h> 

int sort_function( const void *a, const void *b); 

char list[5][4] = { "cat", "car", "cab", "cap", "can" };
 

int main(void)
{
  int  x; 

  qsort((void *)list, 5, sizeof(list[0]), sort_function);
  for (x = 0; x < 5; x++)
      printf("%s\n", list[x]);
  return 0;


int sort_function( const void *a, const void *b)
{
  return( strcmp(a,b) );
}
 

回复:c语言库函数共享

r开头

函数名: raise 
功  能: 向正在执行的程序发送一个信号 
用  法: int raise(int sig); 
程序例: 

#include <signal.h> 

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

int main(void) 

  int i; 

  printf("Ten random numbers from 0 to 99\n\n"); 
  for(i=0; i<10; i++) 
      printf("%d\n", rand() % 100); 
  return 0; 

 
 

函数名: randbrd 
功  能: 随机块读 
用  法: int randbrd(struct fcb *fcbptr, int reccnt); 
程序例: 

#include <process.h> 
#include <string.h> 
#include <stdio.h> 
#include <dos.h> 

int main(void) 

  char far *save_dta; 
  char line[80], buffer[256]; 
  struct fcb blk; 
  int i, result; 

  /* get user input file name for dta */ 
  printf("Enter drive and file name (no path - i.e. aile.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 <process.h> 
#include <string.h> 
#include <stdio.h> 
#include <dos.h> 

int main(void) 

  char far *save_dta; 
  char line[80]; 
  char buffer[256] = "RANDBWR test!"; 
  struct fcb blk; 
  int result; 

  /* get new file name from user */ 
  printf("Enter a file name to create (no path - ie. aile.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 <stdlib.h> 
#include <stdio.h> 
#include <time.h> 

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

int main(void) 

  int i; 

  randomize(); 
  printf("Ten random numbers from 0 to 99\n\n"); 
  for(i=0; i<10; i++) 
      printf("%d\n", rand() % 100); 
  return 0; 

 
 

函数名: read 
功  能: 从文件中读 
用  法: int read(int handle, void *buf, int nbyte); 
程序例: 

#include <stdio.h> 
#include <io.h> 
#include <alloc.h> 
#include <fcntl.h> 
#include <process.h> 
#include <sys\stat.h> 

int main(void) 

  void *buf; 
  int handle, bytes; 

  buf = malloc(10); 

/* 
  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 <stdio.h> 
#include <alloc.h> 
#include <string.h> 

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

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

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

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

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

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

int main(void) 

    FILE *fp; 
    char *fname = "TXXXXXX", *newname, first; 

    newname = mktemp(fname); 
    fp = fopen(newname,"w+"); 
    fprintf(fp,"abcdefghijklmnopqrstuvwxyz"); 
    rewind(fp); 
    fscanf(fp,"%c",&first); 
    printf("The first character is: %c\n",first); 
    fclose(fp); 
    remove(newname); 

    return 0; 

 
 

函数名: rmdir 
功  能: 删除DOS文件目录 
用  法: int rmdir(char *stream); 
程序例: 

#include <stdio.h> 
#include <conio.h> 
#include <process.h> 
#include <dir.h> 

#define DIRNAME "testdir.$$$" 

int main(void) 

  int stat; 

  stat = mkdir(DIRNAME); 
  if (!stat) 
          printf("Directory created\n"); 
  else 
  { 
      printf("Unable to create directory\n"); 
      exit(1); 
  } 

  getch(); 
  system("dir/p"); 
  getch(); 

  stat = rmdir(DIRNAME); 
  if (!stat) 
          printf("\nDirectory deleted\n"); 
  else 
  { 
  perror("\nUnable to delete directory\n"); 
      exit(1); 
  } 

  return 0; 
}
 

回复:c语言库函数共享

s开头

函数名: sbrk 
功  能: 改变数据段空间位置 
用  法: char *sbrk(int incr); 
程序例: 

#include <stdio.h> 
#include <alloc.h> 

int main(void) 

  printf("Changing allocation with sbrk()\n"); 
  printf("Before sbrk() call: %lu bytes free\n", 
  (unsigned long) coreleft()); 
  sbrk(1000); 
  printf(" After sbrk() call: %lu bytes free\n", 
  (unsigned long) coreleft()); 
  return 0; 

 
 

函数名: scanf 
功  能: 执行格式化输入 
用  法: int scanf(char *format[,argument,...]); 
程序例: 

#include <stdio.h> 
#include <conio.h> 

int main(void) 

  char label[20]; 
  char name[20]; 
  int entries = 0; 
  int loop, age; 
  double salary; 

  struct Entry_struct 
  { 
      char  name[20]; 
      int  age; 
      float salary; 
  } entry[20]; 

/* 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<entries;++loop) 
  { 
      printf("Entry %d\n", loop); 
      printf("  Name  : "); 
      scanf("%[A-Za-z]", entry[loop].name); 
      fflush(stdin);  /* flush the input stream in case of bad input */ 

/* input an age as an integer */ 
      printf("  Age    : "); 
      scanf("%d", &entry[loop].age); 
      fflush(stdin);  /* flush the input stream in case of bad input */ 

/* input a salary as a float */ 
      printf("  Salary : "); 
      scanf("%f", &entry[loop].salary); 
      fflush(stdin); /* flush the input stream in case of bad input */ 
  } 

/* Input a name, age and salary as a string, integer, and double */ 
  printf("\nPlease enter your name, age and salary\n"); 
  scanf("%20s %d %lf", name, &age, &salary); 
 

/* Print out the data that was input */ 
  printf("\n\nTable %s\n",label); 
  printf("Compiled by %s  age %d  $%15.2lf\n", name, age, salary); 
  printf("-----------------------------------------------------\n"); 
  for (loop=0;loop<entries;++loop) 
      printf("%4d | %-20s | %5d | %15.2lf\n", 
        loop + 1, 
  entry[loop].name, 
  entry[loop].age, 
        entry[loop].salary); 
  printf("-----------------------------------------------------\n"); 
  return 0; 

 
 

函数名: searchpath 
功  能: 搜索DOS路径 
用  法: char *searchpath(char *filename); 
程序例: 

#include <stdio.h> 
#include <dir.h> 

int main(void) 

  char *p; 

  /* 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 <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; 
  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<USER_FILL; i++) 
  { 
      /* set the fill style */ 
      setfillstyle(i, getmaxcolor()); 

      /* draw the sector slice */ 
      sector(midx, midy, stangle, endangle, xrad, yrad); 

      getch(); 
  } 

  /* clean up */ 
  closegraph(); 
  return 0; 

 

函数名: segread 
功  能: 读段寄存器值 
用  法: void segread(struct SREGS *segtbl); 
程序例: 

#include <stdio.h> 
#include <dos.h> 

int main(void) 

  struct SREGS segs; 

  segread(&segs); 
  printf("Current segment register settings\n\n"); 
  printf("CS: %X  DS: %X\n", segs.cs, segs.ds); 
  printf("ES: %X  SS: %X\n", segs.es, segs.ss); 

  return 0; 

 
 

函数名: setactivepage 
功  能: 设置图形输出活动页 
用  法: void far setactivepage(int pagenum); 
程序例: 

#include <graphics.h> 
#include <stdlib.h> 
#include <stdio.h> 
#include <conio.h> 

int main(void) 

  /* 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 <graphics.h> 
#include <stdlib.h> 
#include <stdio.h> 
#include <conio.h> 

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

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

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

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

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

int main(void) 

  int break_flag; 

  printf("Enter 0 to turn control break off\n"); 
  printf("Enter 1 to turn control break on\n"); 

  break_flag = getch() - 0; 

  setcbrk(break_flag); 

  if (getcbrk()) 
      printf("Cntrl-brk flag is on\n"); 
  else 
      printf("Cntrl-brk flag is off\n"); 
  return 0; 

 
 
 

函数名: setcolor 
功  能: 设置当前画线颜色 
用  法: void far setcolor(int color); 
程序例: 

#include <graphics.h> 
#include <stdlib.h> 
#include <stdio.h> 
#include <conio.h> 

int main(void) 

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

int main(void) 

  struct date reset; 
  struct date save_date; 

  getdate(&save_date); 
  printf("Original date:\n"); 
  system("date"); 

  reset.da_year = 2001; 
  reset.da_day = 1; 
  reset.da_mon = 1; 
  setdate(&reset); 

  printf("Date after setting:\n"); 
  system("date"); 

  setdate(&save_date); 
  printf("Back to original date:\n"); 
  system("date"); 

  return 0; 

 
 

函数名: setdisk 
功  能: 设置当前磁盘驱动器 
用  法: int setdisk(int drive); 
程序例: 

#include <stdio.h> 
#include <dir.h> 

int main(void) 

  int save, disk, disks; 

  /* save 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 <process.h> 
#include <string.h> 
#include <stdio.h> 
#include <dos.h> 

int main(void) 

  char line[80], far *save_dta; 
  char buffer[256] = "SETDTA test!"; 
  struct fcb blk; 
  int result; 

  /* 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 <graphics.h> 
#include <stdlib.h> 
#include <stdio.h> 
#include <conio.h> 

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

/* 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 <stdio.h> 
#include <process.h> 
#include <fcntl.h> 
#include <io.h> 

int main(void) 

  struct ftime filet; 
  FILE *fp; 

  if ((fp = fopen("TEST.$$$", "w")) == NULL) 
  { 
      perror("Error:"); 
      exit(1); 
  } 

  fprintf(fp, "testing...\n"); 

  /* 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 <graphics.h> 
#include <stdlib.h> 
#include <stdio.h> 
#include <conio.h> 

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

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

回复:c语言库函数共享

s开头

函数名: setjmp 
功  能: 非局部转移 
用  法: int setjmp(jmp_buf env); 
程序例: 

#include <stdio.h> 
#include <process.h> 
#include <setjmp.h> 

void subroutine(void); 

jmp_buf jumper; 

int main(void) 

  int value; 

  value = setjmp(jumper); 
  if (value != 0) 
  { 
      printf("Longjmp with value %d\n", value); 
      exit(value); 
  } 
  printf("About to call subroutine ... \n"); 
  subroutine(); 
  return 0; 


void subroutine(void) 

  longjmp(jumper,1); 

 
 

函数名: setlinestyle 
功  能: 设置当前画线宽度和类型 
用  法: void far setlinestyle(int linestype, unsigned upattern); 
程序例: 

#include <graphics.h> 
#include <stdlib.h> 
#include <string.h> 
#include <stdio.h> 
#include <conio.h> 

/* the names of the line styles supported */ 
char *lname[] = { 
  "SOLID_LINE", 
  "DOTTED_LINE", 
  "CENTER_LINE", 
  "DASHED_LINE", 
  "USERBIT_LINE" 
  }; 

int main(void) 

  /* request auto detection */ 
  int gdriver = DETECT, gmode, errorcode; 

  int style, midx, midy, userpat; 
  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; 

  /* a user defined line pattern */ 
  /* binary: "0000000000000001"  */ 
  userpat = 1; 

  for (style=SOLID_LINE; style<=USERBIT_LINE; style++) 
  { 
      /* select the line style */ 
      setlinestyle(style, userpat, 1); 

      /* convert style into a string */ 
      strcpy(stylestr, lname[style]); 

      /* draw a line */ 
      line(0, 0, midx-10, midy); 

      /* draw a rectangle */ 
      rectangle(0, 0, getmaxx(), getmaxy()); 

      /* output a message */ 
      outtextxy(midx, midy, stylestr); 

      /* wait for a key */ 
      getch(); 
      cleardevice(); 
  } 

  /* clean up */ 
  closegraph(); 
  return 0; 

 
 
 

函数名: setmem 
功  能: 存值到存储区 
用  法: void setmem(void *addr, int len, char value); 
程序例: 

#include <stdio.h> 
#include <alloc.h> 
#include <mem.h> 

int main(void) 

  char *dest; 

  de