`
wangleide414
  • 浏览: 606946 次
  • 性别: 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;  

}  

   

分享到:
评论

相关推荐

    linux下常用c语言函数(word和pdf)

    本资源提供了两个文档,一个是"linux的c函数(Word版).doc",另一个是"Linux_C_fun.pdf",它们都包含了关于Linux环境下常用C语言函数的详细资料。下面我们将深入探讨这些知识点。 1. **标准库函数**: - `stdio.h`...

    linux c语言常用函数说明

    在Linux系统中,C语言是基础且强大的编程...这些是Linux C语言编程中常用的一些函数,理解和熟练使用它们是编写高效、稳定程序的关键。通过实践和学习,开发者可以构建复杂的应用程序,充分利用Linux系统的强大功能。

    C语言FFT函数库及安装教程(Windows和Linux)和使用教程

    压缩包包含:1.C语言FFT函数库FFTW,FFTW 是由麻省理工学院计算机科学实验室超级计算技术组开发的一套离散傅立叶变换(DFT)的计算库,开源、高效和标准 C 语言编写的代码使其得到了非常广泛的应用, Intel 的数学库和...

    Linux C语言函数大全(htm 版,比较全)

    C语言函数大全是学习和参考C语言编程的关键资源,它通常包含了C语言标准库中的所有函数,以及一些常用的第三方库函数。这份"Linux C语言函数大全(htm 版,比较全)"很可能是一个HTML文档,提供了一个方便的在线查阅...

    Linux 常用C函数(中文版)

    10. 其他常用函数:如`time`获取当前时间,`sleep`暂停程序执行,`getchar`和`putchar`处理单个字符输入输出等,都是日常编程中经常遇到的函数。 通过学习和实践这些C语言函数,开发者不仅可以编写出高效、可靠的...

    C常用的LinuxC语言函数库

    在Linux环境中进行C语言编程时,熟练掌握常用函数库是非常重要的。本文将详细介绍Linux中C语言函数库中的字符操作函数和字符串操作函数,帮助开发者更好地理解和应用这些基础但重要的函数。 #### 二、字符操作函数 ...

    Linux C语言函数大全

    本资源"Linux C语言函数大全"旨在为开发者提供一份详尽的参考指南,涵盖了Linux环境下C语言常用函数的使用和理解。 博客链接可能包含了作者对这些函数的深入解析和实例应用,这将有助于读者更好地掌握C语言在Linux...

    Linux常用C函数.rar(html版)

    下面,我们将详细探讨一些在Linux系统中常用的C语言函数,并解释它们的作用和使用场景。 1. **标准输入输出函数**: - `printf` 和 `scanf`:这是最基础的输入输出函数,用于格式化输出和输入数据。 - `fgets` 和...

    LinuxC常用函数手册

    这份"LinuxC常用函数手册"为你提供了一份详尽的参考资料,涵盖了Linux C编程中的基础到高级的函数用法。以下是一些关键的知识点: 1. **标准输入输出**: - `printf`与`scanf`:用于格式化输出和输入,是C语言中最...

    Linux C语言函数大全.zip

    1. **标准输入/输出**:`printf` 和 `scanf` 是C语言中最常用的输入输出函数,用于格式化打印和读取用户输入。在Linux中,还可以使用`fprintf`、`fscanf`、`fgets`、`fputs`等函数与文件进行交互。 2. **内存管理**...

    Linux C语言函数集合

    在Linux系统中,C语言是基础且重要的编程语言,它提供了丰富的函数库来支持各种操作。本篇文章将详细探讨在Linux环境下使用的C语言函数,特别是`isalnum`、`isalpha`和`isascii`这三个函数,它们在处理字符和字符串...

    linux常用c函数中文版

    - `fgets()`, `fputs()`: 读写字符串到文件中,是低级文件操作的常用函数。 2. **内存管理函数**: - `malloc()`, `calloc()`, `realloc()`: 动态内存分配,用于在运行时根据需要分配内存。 - `free()`: 释放已...

    Linux常用C函数速查(中文版html).rar

    这个压缩包“Linux常用C函数速查(中文版html)”提供了对Linux下常用C语言函数的详细参考,对于初学者和经验丰富的开发者来说都是一个宝贵的资源。 C语言是一门强大的低级编程语言,它提供了直接访问硬件的能力,...

    linux C语言 socket通信聊天小程序

    在Linux环境中,C语言是构建系统级程序,如网络通信应用的理想选择。Socket编程是C语言在实现网络通信中的核心部分,它允许不同计算机之间的进程进行数据交换。本项目涉及的"Linux C语言 socket通信聊天小程序"是一...

    Linux 常用C函数

    本资源“Linux常用C函数(中文版)”提供了一份详细的C函数参考,涵盖了在Linux环境下编程时经常会遇到的一些关键函数。这些函数是C语言标准库的一部分,同时也是Linux系统调用的基础。下面,我们将深入探讨一些重要...

    Linux_c语言函数库

    Linux_c语言函数库,也称为GNU C Library,通常被称为glibc,是Linux系统上最常用的标准C函数库。它包含了ANSI C、POSIX、X/Open等标准定义的函数,以及许多针对Linux特定特性的扩展。 1. **基本输入输出**: ...

    linux常用C函数大全

    这篇文档“Linux常用C函数大全”涵盖了在Linux环境下进行C程序开发时可能会遇到的大部分常用函数,旨在提供一个清晰、全面的参考资源。下面,我们将详细讨论这些函数的主要功能和用法。 1. **标准输入输出库函数**...

Global site tag (gtag.js) - Google Analytics