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

Linux C语言常用函数 04

 
阅读更多

 

函数名: hypot  

功  能计算直角三角形的斜边长  

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

程序例:  

#include ;  

#include ;  

int main(void)  

{  

   double result;  

   double x = 3.0;  

   double y = 4.0;  

   result = hypot(x, y);  

   printf("The hypotenuse is: %lf\n", result);  

   return 0;  

}  

 

CODE:

 

[Copy to clipboard]

 

函数名: imagesize  

功  能返回保存位图像所需的字节数  

用  法: unsigned far imagesize(int left, int top, int right, int bottom);  

程序例:  

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

}  

   

   

   

函数名: initgraph  

功  能初始化图形系统  

用  法: void far initgraph(int far *graphdriver, int far *graphmode,  

    char far *pathtodriver);  

程序例:  

#include ;  

#include ;  

#include ;  

#include ;  

int main(void)  

{  

   /* request auto detection */  

   int gdriver = DETECT, gmode, errorcode;  

   /* 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);             /* return with error code */  

   }  

   /* draw a line */  

   line(0, 0, getmaxx(), getmaxy());  

   /* clean up */  

   getch();  

   closegraph();  

   return 0;  

}  

   

   

函数名: inport  

功  能从硬件端口中输入  

用  法: int inp(int protid);  

程序例:  

#include ;  

#include ;  

int main(void)  

{  

   int result;  

   int port = 0;  /* serial port 0 */  

   result = inport(port);  

   printf("Word read from port %d = 0x%X\n", port, result);  

   return 0;  

}  

   

   

函数名: insline  

功  能在文本窗口中插入一个空行  

用  法: void insline(void);  

程序例:  

#include ;  

int main(void)  

{  

   clrscr();  

   cprintf("INSLINE inserts an empty line in the text window\r\n");  

   cprintf("at the cursor position using the current text\r\n");  

   cprintf("background color.  All lines below the empty one\r\n");  

   cprintf("move down one line and the bottom line scrolls\r\n");  

   cprintf("off the bottom of the window.\r\n");  

   cprintf("\r\nPress any key to continue:");  

   gotoxy(1, 3);  

   getch();  

   insline();  

   getch();  

   return 0;  

}  

   

   

   

函数名: installuserdriver  

功  能安装设备驱动程序到BGI设备驱动程序表中  

用  法: int far installuserdriver(char far *name, int (*detect)(void));  

程序例:  

#include ;  

#include ;  

#include ;  

#include ;  

/* function prototypes */  

int huge detectEGA(void);  

void checkerrors(void);  

int main(void)  

{  

   int gdriver, gmode;  

   /* install a user written device driver */  

   gdriver = installuserdriver("EGA", detectEGA);  

   /* must force use of detection routine */  

   gdriver = DETECT;  

   /* check for any installation errors */  

   checkerrors();  

   /* initialize graphics and local variables */  

   initgraph(&gdriver, &gmode, "");  

   /* check for any initialization errors */  

   checkerrors();  

   /* draw a line */  

   line(0, 0, getmaxx(), getmaxy());  

   /* clean up */  

   getch();  

   closegraph();  

   return 0;  

}  

/* detects EGA or VGA cards */  

int huge detectEGA(void)  

{  

   int driver, mode, sugmode = 0;  

   detectgraph(&driver, &mode);  

   if ((driver == EGA) || (driver == VGA))  

      /* return suggested video mode number */  

      return sugmode;  

   else  

      /* return an error code */  

      return grError;  

}  

/* check for and report any graphics errors */  

void checkerrors(void)  

{  

   int errorcode;  

   /* read result of last graphics operation */  

   errorcode = graphresult();  

   if (errorcode != grOk)  

   {  

      printf("Graphics error: %s\n", grapherrormsg(errorcode));  

      printf("Press any key to halt:");  

      getch();  

      exit(1);  

   }  

}  

函数名: installuserfont  

功  能安装未嵌入BGI系统的字体文件(CHR)  

用  法: int far installuserfont(char far *name);  

程序例:  

#include ;  

#include ;  

#include ;  

#include ;  

/* function prototype */  

void checkerrors(void);  

int main(void)  

{  

   /* request auto detection */  

   int gdriver = DETECT, gmode;  

   int userfont;  

   int midx, midy;  

   /* initialize graphics and local variables */  

   initgraph(&gdriver, &gmode, "");  

   midx = getmaxx() / 2;  

   midy = getmaxy() / 2;  

   /* check for any initialization errors */  

   checkerrors();  

   /* install a user defined font file */  

   userfont = installuserfont("USER.CHR");  

   /* check for any installation errors */  

   checkerrors();  

   /* select the user font */  

   settextstyle(userfont, HORIZ_DIR, 4);  

   /* output some text */  

   outtextxy(midx, midy, "Testing!");  

   /* clean up */  

   getch();  

   closegraph();  

   return 0;  

}  

/* check for and report any graphics errors */  

void checkerrors(void)  

{  

   int errorcode;  

   /* read result of last graphics operation */  

   errorcode = graphresult();  

   if (errorcode != grOk)  

   {  

      printf("Graphics error: %s\n", grapherrormsg(errorcode));  

      printf("Press any key to halt:");  

      getch();  

      exit(1);  

   }  

}  

   

   

   

函数名: int86  

功  能通用8086软中断接口  

用  法: int int86(int intr_num, union REGS *inregs, union REGS *outregs);  

程序例:  

#include ;  

#include ;  

#include ;  

#define VIDEO 0x10  

void movetoxy(int x, int y)  

{  

   union REGS regs;  

   regs.h.ah = 2;  /* set cursor postion */  

   regs.h.dh = y;  

   regs.h.dl = x;  

   regs.h.bh = 0;  /* video page 0 */  

   int86(VIDEO, &s, &s);  

}  

int main(void)  

{  

   clrscr();  

   movetoxy(35, 10);  

   printf("Hello\n");  

   return 0;  

}  

   

   

函数名: int86x  

功  能通用8086软中断接口  

用  法: int int86x(int intr_num, union REGS *insegs, union REGS *outregs,  

     struct SREGS *segregs);  

程序例:  

#include ;  

#include ;  

#include ;  

int main(void)  

{  

   char filename[80];  

   union REGS inregs, outregs;  

   struct SREGS segregs;  

   printf("Enter filename: ");  

   gets(filename);  

   inregs.h.ah = 0x43;  

   inregs.h.al = 0x21;  

   inregs.x.dx = FP_OFF(filename);  

   segregs.ds = FP_SEG(filename);  

   int86x(0x21, &inregs, &outregs, &segregs);  

   printf("File attribute: %X\n", outregs.x.cx);  

   return 0;  

}  

   

   

   

函数名: intdos  

功  能通用DOS接口  

用  法: int intdos(union REGS *inregs, union REGS *outregs);  

程序例:  

#include ;  

#include ;  

/* deletes file name; returns 0 on success, nonzero on failure */  

int delete_file(char near *filename)  

{  

   union REGS regs;  

   int ret;  

   regs.h.ah = 0x41;                            /* delete file */  

   regs.x.dx = (unsigned) filename;  

   ret = intdos(&s, &s);  

   /* if carry flag is set, there was an error */  

   return(regs.x.cflag ? ret : 0);  

}  

int main(void)  

{  

   int err;  

   err = delete_file("NOTEXIST.$$$");  

   if (!err)  

      printf("Able to delete NOTEXIST.$$$\n");  

   else  

      printf("Not Able to delete NOTEXIST.$$$\n");  

   return 0;  

}  

   

   

   

函数名: intdosx  

功  能通用DOS中断接口  

用  法: int intdosx(union REGS *inregs, union REGS *outregs,  

      struct SREGS *segregs);  

程序例:  

#include ;  

#include ;  

/* deletes file name; returns 0 on success, nonzero on failure */  

int delete_file(char far *filename)  

{  

   union REGS regs; struct SREGS sregs;  

   int ret;  

   regs.h.ah = 0x41;                      /* delete file */  

   regs.x.dx = FP_OFF(filename);  

   sregs.ds = FP_SEG(filename);  

   ret = intdosx(&s, &s, &sregs);  

   /* if carry flag is set, there was an error */  

   return(regs.x.cflag ? ret : 0);  

}  

int main(void)  

{  

   int err;  

   err = delete_file("NOTEXIST.$$$");  

   if (!err)  

      printf("Able to delete NOTEXIST.$$$\n");  

   else  

      printf("Not Able to delete NOTEXIST.$$$\n");  

   return 0;  

}  

   

   

函数名: intr  

功  能改变软中断接口  

用  法: void intr(int intr_num, struct REGPACK *preg);  

程序例:  

#include ;  

#include ;  

#include ;  

#include ;  

#define CF 1  /* Carry flag */  

int main(void)  

{  

   char directory[80];  

   struct REGPACK reg;  

   printf("Enter directory to change to: ");  

   gets(directory);  

   reg.r_ax = 0x3B 函数名: ioctl  

功  能控制I/O设备  

用  法: int ioctl(int handle, int cmd[,int *argdx, int argcx]);  

程序例:  

#include ;  

#include ;  

#include ;  

int main(void)  

{  

   int stat;  

   /* use func 8 to determine if the default drive is removable */  

   stat = ioctl(0, 8, 0, 0);  

   if (!stat)  

      printf("Drive %c is removable.\n", getdisk() + 'A');  

   else  

      printf("Drive %c is not removable.\n", getdisk() + 'A');  

   return 0;  

}  

   

   

   

函数名: isatty  

功  能检查设备类型  

用  法: int isatty(int handle);  

程序例:  

#include ;  

#include ;  

int main(void)  

{  

   int handle;  

   handle = fileno(stdprn);  

   if (isatty(handle))  

      printf("Handle %d is a device type\n", handle);  

   else  

      printf("Handle %d isn't a device type\n", handle);  

   return 0;  

}  

   

   

   

函数名: itoa  

功  能把一整数转换为字符串  

用  法: char *itoa(int value, char *string, int radix);  

程序例:  

#include ;  

#include ;  

int main(void)  

{  

   int number = 12345;  

   char string[25];  

   itoa(number, string, 10);  

   printf("integer = %d string = %s\n", number, string);  

   return 0;  

}  

CODE:

[Copy to clipboard]

函数名: kbhit 

功  能检查当前按下的键 

用  法: int kbhit(void); 

程序例:  

#include ;  

int main(void) 

   cprintf("Press any key to continue:"); 

   while (!kbhit()) /* do nothing */ ; 

   cprintf("\r\nA key was pressed...\r\n"); 

   return 0; 

  

  

   

函数名: keep 

功  能退出并继续驻留 

用  法: void keep(int status, int size); 

程序例:  

/***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.  Due to the nature of this 

   function the formula used to compute 

   the number of paragraphs may not 

   necessarily work in all cases.  Use with 

   care!  Terminate Stay Resident (TSR) 

   programs are complex and no other support 

   for them is provided.  Refer to the 

   MS-DOS technical documentation 

   for more information.  */ 

#include ; 

/* The clock tick interrupt */ 

#define INTR 0x1C 

/* Screen attribute (blue on grey) */ 

#define ATTR 0x7900  

/* reduce heaplength and stacklength 

to make a smaller program in memory */ 

extern unsigned _heaplen = 1024; 

extern unsigned _stklen  = 512;  

void interrupt ( *oldhandler)(void);  

void interrupt handler(void) 

   unsigned int (far *screen)[80]; 

   static int count;  

/* For a color screen the video memory 

   is at B800:0000.  For a monochrome 

   system use B000:000 */ 

   screen = MK_FP(0xB800,0);  

/* increase the counter and keep it 

   within 0 to 9 */ 

   count++; 

   count %= 10;  

/* put the number on the screen */ 

   screen[0][79] = count + '0' + ATTR;  

/* call the old interrupt handler */ 

   oldhandler(); 

}  

int main(void) 

{  

/* get the address of the current clock 

   tick interrupt */ 

oldhandler = getvect(INTR);  

/* install the new interrupt handler */ 

setvect(INTR, handler);  

/* _psp is the starting address of the 

   program in memory.  The top of the stack 

   is the end of the program.  Using _SS and 

   _SP together we can get the end of the 

   stack.  You may want to allow a bit of 

   saftey space to insure that enough room 

   is being allocated ie: 

   (_SS + ((_SP + safety space)/16) - _psp) 

*/ 

keep(0, (_SS + (_SP/16) - _psp)); 

return 0; 

main()主函数  

    每一程序都必须有一main()函数可以根据自己的爱好把它放在程序的某  

个地方。有些程序员把它放在最前面而另一些程序员把它放在最后面无论放  

在哪个地方以下几点说明都是适合的。  

    1. main() 参数  

    在Turbo C2.0启动过程中传递main()函数三个参数: argc, argvenv。  

     * argc:  整数为传给main()的命令行参数个数。  

     * argv:  字符串数组。  

              在DOS 3.X 版本中, argv[0] 为程序运行的全路径名DOS 3.0  

              以下的版本, argv[0]为空串("") 。  

              argv[1] 为在DOS命令行中执行程序名后的第一个字符串;  

              argv[2] 为执行程序名后的第二个字符串;  

              ...  

              argv[argc]NULL。  

     *env:  安符串数组。env[] 的每一个元素都包含ENVVAR=value形式的字符  

串。其中ENVVAR为环境变量如PATH87value ENVVAR的对应值如C:\DOS, C:  

\TURBOC(对于PATH) YES(对于87)。  

    Turbo C2.0启动时总是把这三个参数传递给main()函数可以在用户程序中  

说明(或不说明)它们如果说明了部分(或全部)参数它们就成为main()子程序  

的局部变量。  

    请注意一旦想说明这些参数则必须按argc, argv, env 的顺序如以下  

的例子:  

     main()  

     main(int argc)  

     main(int argc, char *argv[])  

     main(int argc, char *argv[], char *env[])  

    其中第二种情况是合法的但不常见因为在程序中很少有只用argc, 而不  

argv[]的情况。  

    以下提供一样例程序EXAMPLE.EXE,  演示如何在main()函数中使用三个参数:  

     /*program name EXAMPLE.EXE*/  

     #include ;  

     #include ;  

     main(int argc, char *argv[], char *env[])  

     {  

          int i;  

          printf("These are the %d  command- line  arguments passed  to  

                  main:\n\n", argc);  

          for(i=0; i如果在DOS 提示符下按以下方式运行EXAMPLE.EXE:  

    C:\example first_argument "argument with blanks"  3  4  "last  but  

one" stop!  

    注意可以用双引号括起内含空格的参数如本例中的:   "  argument  

with blanks""Last but one")。  

    结果是这样的:  

     The value of argc is 7  

     These are the 7 command-linearguments passed to main:  

     argv[0]:C:\TURBO\EXAMPLE.EXE  

     argv[1]:first_argument  

     argv[2]:argument with blanks  

     argv[3]:3  

     argv[4]:4  

     argv[5]:last but one  

     argv[6]:stop!  

     argv[7]NULL)  

     The environment string(s) on this system are:  

     env[0]: COMSPEC=C:\COMMAND.COM  

     env[1]: PROMPT=$P$G            /*视具体设置而定*/  

     env[2]: PATH=C:\DOS;C:\TC      /*视具体设置而定*/  

   

     应该提醒的是传送main() 函数的命令行参数的最大长度为128 个字符 (包  

括参数间的空格),  这是由DOS 限制的。  

   

函数名: matherr  

功  能用户可修改的数学错误处理程序  

用  法: int matherr(struct exception *e);  

程序例:  

/* This is a user-defined matherr function that prevents  

   any error messages from being printed. */  

#include;  

int matherr(struct exception *a)  

{  

   return 1;  

}  

   

   

   

函数名: memccpy  

功  能从源source中拷贝n个字节到目标destin中  

用  法: void *memccpy(void *destin, void *source, unsigned char ch,  

       unsigned n);  

程序例:  

#include ;  

#include ;  

int main(void)  

{  

   char *src = "http://linux.chinaunix.net/techdoc/develop/2006/07/30/This is the source string";  

   char dest[50];  

   char *ptr;  

   ptr = memccpy(dest, src, 'c', strlen(src));  

   if (ptr)  

   {  

      *ptr = '\0';  

      printf("The character was found:  %s\n", dest);  

   }  

   else  

      printf("The character wasn't found\n");  

   return 0;  

}  

   

   

函数名: malloc  

功  能内存分配函数  

用  法: void *malloc(unsigned size);  

程序例:  

#include ;  

#include ;  

#include ;  

#include ;  

int main(void)  

{  

   char *str;  

   /* allocate memory for string */  

   /* This will generate an error when compiling */  

   /* with C++, use the new operator instead. */  

   if ((str = malloc(10)) == NULL)  

   {  

      printf("Not enough memory to allocate buffer\n");  

      exit(1);  /* terminate program if out of memory */  

   }  

   /* copy "Hello" into string */  

   strcpy(str, "Hello");  

   /* display string */  

   printf("String is %s\n", str);  

   /* free memory */  

   free(str);  

   return 0;  

}  

   

   

   

函数名: memchr  

功  能在数组的前n个字节中搜索字符  

用  法: void *memchr(void *s, char ch, unsigned n);  

程序例:  

#include ;  

#include ;  

int main(void)  

{  

   char str[17];  

   char *ptr;  

   strcpy(str, "This is a string");  

   ptr = memchr(str, 'r', strlen(str));  

   if (ptr)  

      printf("The character 'r' is at position: %d\n", ptr - str);  

   else  

      printf("The character was not found\n");  

   return 0;  

}  

   

函数名: memcpy  

功  能从源source中拷贝n个字节到目标destin中  

用  法: void *memcpy(void *destin, void *source, unsigned n);  

程序例:  

#include ;  

#include ;  

int main(void)  

{  

   char src[] = "******************************";  

   char dest[] = "abcdefghijlkmnopqrstuvwxyz0123456709";  

   char *ptr;  

   printf("destination before memcpy: %s\n", dest);  

   ptr = memcpy(dest, src, strlen(src));  

   if (ptr)  

      printf("destination after memcpy:  %s\n", dest);  

   else  

      printf("memcpy failed\n");  

   return 0;  

}  

   

   

函数名: memicmp  

功  能比较两个串s1s2的前n个字节忽略大小写  

用  法: int memicmp(void *s1, void *s2, unsigned n);  

程序例:  

#include ;  

#include ;  

int main(void)  

{  

   char *buf1 = "ABCDE123";  

   char *buf2 = "abcde456";  

   int stat;  

   stat = memicmp(buf1, buf2, 5);  

   printf("The strings to position 5 are ");  

   if (stat)  

      printf("not ");  

   printf("the same\n");  

   return 0;  

}  

   

   

函数名: memmove  

功  能移动一块字节  

用  法: void *memmove(void *destin, void *source, unsigned n);  

程序例:  

#include ;  

#include ;  

int main(void)  

{  

  char *dest = "abcdefghijklmnopqrstuvwxyz0123456789";  

  char *src = "http://linux.chinaunix.net/techdoc/develop/2006/07/30/******************************";  

  printf("destination prior to memmove: %s\n", dest);  

  memmove(dest, src, 26);  

  printf("destination after memmove:    %s\n", dest);  

  return 0;  

}  

   

   

   

函数名: memset  

功  能设置s中的所有字节为ch, s数组的大小由n给定  

用  法: void *memset(void *s, char ch, unsigned n);  

程序例:  

#include ;  

#include ;  

#include ;  

int main(void)  

{  

   char buffer[] = "Hello world\n";  

   printf("Buffer before memset: %s\n", buffer);  

   memset(buffer, '*', strlen(buffer) - 1);  

   printf("Buffer after memset:  %s\n", buffer);  

   return 0;  

}  

   

   

函数名: mkdir  

功  能建立一个目录  

用  法: int mkdir(char *pathname);  

程序例:  

#include ;  

#include ;  

#include ;  

#include ;  

int main(void)  

{  

  int status;  

   clrscr();  

   status = mkdir("asdfjklm");  

   (!status) ? (printf("Directory created\n")) :  

               (printf("Unable to create directory\n"));  

   getch();  

   system("dir");  

   getch();  

   status = rmdir("asdfjklm");  

   (!status) ? (printf("Directory deleted\n")) :  

  (perror("Unable to delete directory"));  

   return 0;  

}  

   

   

   

函数名: mktemp  

功  能建立唯一的文件名  

用  法: char *mktemp(char *template);  

程序例:  

#include ;  

#include ;  

int main(void)  

{  

   /* fname defines the template for the  

     temporary file.  */  

   char *fname = "TXXXXXX", *ptr;  

   ptr = mktemp(fname);  

   printf("%s\n",ptr);  

   return 0;  

}  

   

   

函数名: MK_FP  

功  能设置一个远指针  

用  法: void far *MK_FP(unsigned seg, unsigned off);  

程序例:  

#include ;  

#include ;  

int main(void)  

{  

   int gd, gm, i;  

   unsigned int far *screen;  

   detectgraph(&gd, &gm);  

   if (gd == HERCMONO)  

       screen = MK_FP(0xB000, 0);  

   else  

       screen = MK_FP(0xB800, 0);  

   for (i=0; i函数名: modf  

功  能把数分为指数和尾数  

用  法: double modf(double value, double *iptr);  

程序例:  

#include ;  

#include ;  

int main(void)  

{  

   double fraction, integer;  

   double number = 100000.567;  

   fraction = modf(number, &integer);  

   printf("The whole and fractional parts of %lf are %lf and %lf\n",  

          number, integer, fraction);  

   return 0;  

}  

   

   

函数名: movedata  

功  能拷贝字节  

用  法: void movedata(int segsrc, int offsrc, int segdest,  

  int offdest, unsigned numbytes);  

程序例:  

#include ;  

#define MONO_BASE 0xB000  

/* saves the contents of the monochrome screen in buffer */  

void save_mono_screen(char near *buffer)  

{  

   movedata(MONO_BASE, 0, _DS, (unsigned)buffer, 80*25*2);  

}  

int main(void)  

{  

   char buf[80*25*2];  

   save_mono_screen(buf);  

}  

   

   

函数名: moverel  

功  能将当前位置(CP)移动一相对距离  

用  法: void far moverel(int dx, int dy);  

程序例:  

#include ;  

#include ;  

#include ;  

#include ;  

int main(void)  

{  

   /* request auto detection */  

   int gdriver = DETECT, gmode, errorcode;  

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

   }  

   /* move the C.P. to location (20, 30) */  

   moveto(20, 30);  

   /* plot a pixel at the C.P. */  

   putpixel(getx(), gety(), getmaxcolor());  

   /* create and output a message at (20, 30) */  

   sprintf(msg, " (%d, %d)", getx(), gety());  

   outtextxy(20, 30, msg);  

   /* move to a point a relative distance */  

   /* away from the current value of C.P. */  

   moverel(100, 100);  

   /* plot a pixel at the C.P. */  

   putpixel(getx(), gety(), getmaxcolor());  

   /* create and output a message at C.P. */  

   sprintf(msg, " (%d, %d)", getx(), gety());  

   outtext(msg);  

   /* clean up */  

   getch();  

   closegraph();  

   return 0;  

}  

   

   

函数名: movetext  

功  能将屏幕文本从一个矩形区域拷贝到另一个矩形区域  

用  法: int movetext(int left, int top, int right, int bottom,  

  int newleft, int newtop);  

程序例:  

#include ;  

#include ;  

int main(void)  

{  

   char *str = "This is a test string";  

   clrscr();  

   cputs(str);  

   getch();  

   movetext(1, 1, strlen(str), 2, 10, 10);  

   getch();  

   return 0;  

}  

   

   

函数名: moveto  

功  能CP移到(x, y)  

用  法: void far moveto(int x, int y);  

程序例:  

#include ;  

#include ;  

#include ;  

#include ;  

int main(void)  

{  

   /* request auto detection */  

   int gdriver = DETECT, gmode, errorcode;  

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

   }  

   /* move the C.P. to location (20, 30) */  

   moveto(20, 30);  

   /* plot a pixel at the C.P. */  

   putpixel(getx(), gety(), getmaxcolor());  

   /* create and output a message at (20, 30) */  

   sprintf(msg, " (%d, %d)", getx(), gety());  

   outtextxy(20, 30, msg);  

   /* move to (100, 100) */  

   moveto(100, 100);  

   /* plot a pixel at the C.P. */  

   putpixel(getx(), gety(), getmaxcolor());  

   /* create and output a message at C.P. */  

   sprintf(msg, " (%d, %d)", getx(), gety());  

   outtext(msg);  

   /* clean up */  

   getch();  

   closegraph();  

   return 0;  

}  

   

   

函数名: movemem  

功  能移动一块字节  

用  法: void movemem(void *source, void *destin, unsigned len);  

程序例:  

#include ;  

#include ;  

#include ;  

#include ;  

int main(void)  

{  

   char *source = "Borland International";  

   char *destination;  

   int length;  

   length = strlen(source);  

   destination = malloc(length + 1);  

   movmem(source,destination,length);  

   printf("%s\n",destination);  

   return 0;  

}  

   

   

函数名: normvideo  

功  能选择正常亮度字符  

用  法: void normvideo(void);  

程序例:  

#include ;  

int main(void)  

{  

   normvideo();  

   cprintf("NORMAL Intensity Text\r\n");  

   return 0;  

}  

   

   

函数名: nosound  

功  能关闭PC扬声器  

用  法: void nosound(void);  

程序例:  

/* Emits a 7-Hz tone for 10 seconds.  

     True story: 7 Hz is the resonant frequency of a chicken's skull cavity.  

     This was determined empirically in Australia, where a new factory  

     generating 7-Hz tones was located too close to a chicken ranch:  

     When the factory started up, all the chickens died.  

     Your PC may not be able to emit a 7-Hz tone.  

*/  

int main(void)  

{  

   sound(7);  

   delay(10000);  

   nosound();  

 

CODE:

 

[Copy to clipboard]

 

函数名: open  

功  能打开一个文件用于读或写  

用  法: int open(char *pathname, int access[, int permiss]);  

程序例:  

#include ;  

#include ;  

#include ;  

#include ;  

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 ;  

#include ;  

int main(void)  

{  

   int value = http://linux.chinaunix.net/techdoc/develop/2006/07/30/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 ;  

#include ;  

int main(void)  

{  

   int value = http://linux.chinaunix.net/techdoc/develop/2006/07/30/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 ;  

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

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

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

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

}  

函数名: parsfnm  

功  能分析文件名  

用  法: char *parsfnm (char *cmdline, struct fcb *fcbptr, int option);  

程序例:  

#include ;  

#include ;  

#include ;  

#include ;  

int main(void)  

{  

   char line[80];  

   struct fcb blk;  

   /* get file name */  

   printf("Enter drive and file name (no path - ie. a:file.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 ;  

#include ;  

#include ;  

int main(void)  

{  

   int value = http://linux.chinaunix.net/techdoc/develop/2006/07/30/0;  

   printf("The current status of your keyboard is:\n");  

   value = http://linux.chinaunix.net/techdoc/develop/2006/07/30/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 ;  

#include ;  

#include ;  

int main(void)  

{  

   int value = http://linux.chinaunix.net/techdoc/develop/2006/07/30/0;  

   printf("The current status of your keyboard is:\n");  

   value = http://linux.chinaunix.net/techdoc/develop/2006/07/30/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 ;  

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 ;  

#include ;  

#include ;  

#include ;  

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;  

}  

   

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics