`
wangleide414
  • 浏览: 590344 次
  • 性别: Icon_minigender_1
  • 来自: 西安
社区版块
存档分类
最新评论

Linux C语言常用函数 05

 
阅读更多

 

函数名: poke  

功  能存值到一个给定存储单元  

用  法: void poke(int segment, int offset, int value);  

程序例:  

#include ;  

#include ;  

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 ;  

#include ;  

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 ;  

#include ;  

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

功  能指数函数(xy次方)  

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

程序例:  

#include ;  

#include ;  

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  

功  能指数函数(10p次方)  

用  法: double pow10(int p);  

程序例:  

#include ;  

#include ;  

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 ;  

#include ;  

#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 函数名: putc  

功  能输出一字符到指定流中  

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

程序例:  

#include ;  

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 ;  

#include ;  

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 ;  

/* 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函数名: putenv  

功  能把字符串加到当前环境中  

用  法: int putenv(char *envvar);  

程序例:  

#include ;  

#include ;  

#include ;  

#include ;  

#include ;  

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 ;  

#include ;  

#include ;  

#include ;  

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

#include ;  

#include ;  

#include ;  

#include ;  

#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函数名: puts  

功  能送一字符串到流中  

用  法: int puts(char *string);  

程序例:  

#include ;  

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 ;  

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 ;  

#include ;  

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

}  

 

CODE:

 

[Copy to clipboard]

 

函数名: qsort 

功  能使用快速排序例程进行排序 

用  法: void qsort(void *base, int nelem, int width, int (*fcmp)()); 

程序例:  

#include ; 

#include ; 

#include ;  

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 函数名: 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函数名: 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函数名: 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函数名: 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 函数名: 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;  

}  

 

CODE:

 

[Copy to clipboard]

 

函数名: 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函数名: searchpath  

功  能搜索DOS路径  

用  法: char *searchpath(char *filename);  

程序例:  

#include ;  

#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函数名: segread  

功  能读段寄存器值  

用  法: void segread(struct SREGS *segtbl);  

程序例:  

#include ;  

#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函数名: 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;  

}  

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics