⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 硬件处理函数.txt

📁 一些用到的函数 功能齐全
💻 TXT
📖 第 1 页 / 共 2 页
字号:
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 <stdio.h> 
#include <string.h> 
#include <dir.h> 
#include <dos.h> 

#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 << 8;         /* shift 3Bh into  AH */ 
   reg.r_dx = FP_OFF(directory); 
   reg.r_ds = FP_SEG(directory); 
   intr(0x21, &reg); 
   if (reg.r_flags & CF) 
      printf("Directory change failed\n"); 
   getcwd(directory, 80); 
   printf("The current directory is: %s\n", directory); 
   return 0; 
} 
  
  

函数名: ioctl 
功  能: 控制I/O设备 
用  法: int ioctl(int handle, int cmd[,int *argdx, int argcx]); 
程序例: 

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

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

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

int main(void) 
{ 
   int number = 12345; 
   char string[25]; 

   itoa(number, string, 10); 
   printf("integer = %d string = %s\n", number, string); 
   return 0; 
} 
  

                             返回目录 
  
  
函数名: kbhit 
功  能: 检查当前按下的键 
用  法: int kbhit(void); 
程序例: 

#include <conio.h> 

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 <dos.h> 
/* 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; 
} 
  

                             返回目录 





版权所有(C) 潇逸天地
Copyright by 潇 逸 1999 
建议用 IE4.0 800*600真彩色浏览本站以达到最好效果
网站制作:潇 逸(周 炜)   
函数名: labs 
功  能: 取长整型绝对值 
用  法: long labs(long n); 
程序例: 

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

int main(void) 
{ 
   long result; 
   long x = -12345678L; 

   result= labs(x); 
   printf("number: %ld abs value: %ld\n", 
      x, result); 

   return 0; 
} 
  
  
  

函数名: ldexp 
功  能: 计算value*2的幂 
用  法: double ldexp(double value, int exp); 
程序例: 

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

int main(void) 
{ 
   double value; 
   double x = 2; 

   /* ldexp raises 2 by a power of 3 
      then multiplies the result by 2   */ 
   value = ldexp(x,3); 
   printf("The ldexp value is: %lf\n", 
      value); 

   return 0; 
} 
  
  

函数名: ldiv 
功  能: 两个长整型数相除, 返回商和余数 
用  法: ldiv_t ldiv(long lnumer, long ldenom); 
程序例: 

/* ldiv example */ 

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

int main(void) 
{ 
   ldiv_t lx; 

   lx = ldiv(100000L, 30000L); 
   printf("100000 div 30000 = %ld remainder %ld\n", lx.quot, lx.rem); 
   return 0; 
} 
  
  
  

函数名: lfind 
功  能: 执行线性搜索 
用  法: void *lfind(void *key, void *base, int *nelem, int width, 
      int (*fcmp)()); 
程序例: 

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

int compare(int *x, int *y) 
{ 
   return( *x - *y ); 
} 

int main(void) 
{ 
   int array[5] = {35, 87, 46, 99, 12}; 
   size_t nelem = 5; 
   int key; 
   int *result; 

   key = 99; 
   result = lfind(&key, array, &nelem, 
        sizeof(int), (int(*)(const void *,const void *))compare); 
   if (result) 
      printf("Number %d found\n",key); 
   else 
      printf("Number %d not found\n",key); 

   return 0; 
} 
  
  

函数名: line 
功  能: 在指定两点间画一直线 
用  法: void far line(int x0, int y0, int x1, int y1); 
程序例: 

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

int main(void) 
{ 
   /* request auto detection */ 
   int gdriver = DETECT, gmode, errorcode; 
   int xmax, ymax; 

   /* initialize graphics and local variables */ 
   initgraph(&gdriver, &gmode, ""); 

   /* read result of initialization */ 
   errorcode = graphresult(); 
   /* an error occurred */ 
   if (errorcode != grOk) 
   { 
      printf("Graphics error: %s\n", 
             grapherrormsg(errorcode)); 
      printf("Press any key to halt:"); 
      getch(); 
      exit(1); 
   } 

   setcolor(getmaxcolor()); 
   xmax = getmaxx(); 
   ymax = getmaxy(); 

   /* draw a diagonal line */ 
   line(0, 0, xmax, ymax); 

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

函数名: linerel 
功  能: 从当前位置点(CP)到与CP有一给定相对距离的点画一直线 
用  法: void far linerel(int dx, int dy); 
程序例: 

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

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) 
   { 
      printf("Graphics error: %s\n", 
  grapherrormsg(errorcode)); 
      printf("Press any key to halt:"); 
      getch(); 
      exit(1); 
   } 

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

   /* create and output a 
      message at (20, 30) */ 
   sprintf(msg, " (%d, %d)", getx(), gety()); 
   outtextxy(20, 30, msg); 

   /* draw a line to a point a relative 
      distance away from the current 
      value of C.P.   */ 
   linerel(100, 100); 

   /* create and output a message at C.P. */ 
   sprintf(msg, " (%d, %d)", getx(), gety()); 
   outtext(msg); 

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

函数名: localtime 
功  能: 把日期和时间转变为结构 
用  法: struct tm *localtime(long *clock); 
程序例: 

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

int main(void) 
{ 
   time_t timer; 
   struct tm *tblock; 

   /* gets time of day */ 
   timer = time(NULL); 

   /* converts date/time to a structure */ 
   tblock = localtime(&timer); 

   printf("Local time is: %s", asctime(tblock)); 

   return 0; 
} 
  
  
  

函数名: lock 
功  能: 设置文件共享锁 
用  法: int lock(int handle, long offset, long length); 
程序例: 

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

int main(void) 
{ 
   int handle, status; 
   long length; 

   /* Must have DOS Share.exe loaded for */ 
   /* file locking to function properly */ 

   handle = sopen("c:\\autoexec.bat", 
      O_RDONLY,SH_DENYNO,S_IREAD); 

   if (handle < 0) 
   { 
      printf("sopen failed\n"); 
      exit(1); 
   } 

   length = filelength(handle); 
   status = lock(handle,0L,length/2); 

   if (status == 0) 
      printf("lock succeeded\n"); 
   else 
      printf("lock failed\n"); 

   status = unlock(handle,0L,length/2); 

   if (status == 0) 
      printf("unlock succeeded\n"); 
   else 
      printf("unlock failed\n"); 

   close(handle); 
   return 0; 
} 
  
  

函数名: log 
功  能: 对数函数ln(x) 
用  法: double log(double x); 
程序例: 

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

int main(void) 
{ 
   double result; 
   double x = 8.6872; 

   result = log(x); 
   printf("The natural log of %lf is %lf\n", x, result); 

   return 0; 
} 
  
  

函数名: log10 
功  能: 对数函数log 
用  法: double log10(double x); 
程序例: 

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

int main(void) 
{ 
   double result; 
   double x = 800.6872; 

   result = log10(x); 
   printf("The common log of %lf is %lf\n", x, result); 

   return 0; 
} 
  
  
  

函数名: longjump 
功  能: 执行非局部转移 
用  法: void longjump(jmp_buf env, int val); 
程序例: 

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

void subroutine(jmp_buf); 

int main(void) 
{ 

   int value; 
   jmp_buf jumper; 

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

   return 0; 
} 

void subroutine(jmp_buf jumper) 
{ 
   longjmp(jumper,1); 
} 
  
  
  

函数名: lowvideo 
功  能: 选择低亮度字符 
用  法: void lowvideo(void); 
程序例: 

#include <conio.h> 

int main(void) 
{ 
   clrscr(); 

   highvideo(); 
   cprintf("High Intesity Text\r\n"); 
   lowvideo(); 
   gotoxy(1,2); 
   cprintf("Low Intensity Text\r\n"); 

   return 0; 
} 
  
  
  

函数名: lrotl, _lrotl 
功  能: 将无符号长整型数向左循环移位 
用  法: unsigned long lrotl(unsigned long lvalue, int count); 
 unsigned long _lrotl(unsigned long lvalue, int count); 
程序例: 

/* lrotl example */ 
#include <stdlib.h> 
#include <stdio.h> 

int main(void) 
{ 
   unsigned long result; 
   unsigned long value = 100; 

   result = _lrotl(value,1); 
   printf("The value %lu rotated left one bit is: %lu\n", value, result); 

   return 0; 
} 
  
  

函数名: lsearch 
功  能: 线性搜索 
用  法: void *lsearch(const void *key, void *base, size_t *nelem, 
       size_t width, int (*fcmp)(const void *, const void *)); 
程序例: 

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

int compare(int *x, int *y) 
{ 
   return( *x - *y ); 
} 

int main(void) 
{ 
   int array[5] = {35, 87, 46, 99, 12}; 
   size_t nelem = 5; 
   int key; 
   int *result; 

   key = 99; 
   result = lfind(&key, array, &nelem, 
               sizeof(int), (int(*)(const void *,const void *))compare); 
   if (result) 
      printf("Number %d found\n",key); 
   else 
      printf("Number %d not found\n",key); 

   return 0; 
} 
  
  
  

函数名: lseek 
功  能: 移动文件读/写指针 
用  法: long lseek(int handle, long offset, int fromwhere); 
程序例: 

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

int main(void) 
{ 
   int handle; 
   char msg[] = "This is a test"; 
   char ch; 

   /* create a file */ 
   handle = open("TEST.$$$", O_CREAT | O_RDWR, S_IREAD | S_IWRITE); 

   /* write some data to the file */ 
   write(handle, msg, strlen(msg)); 

   /* seek to the begining of the file */ 
   lseek(handle, 0L, SEEK_SET); 

   /* reads chars from the file until we hit EOF */ 
   do 
   { 
      read(handle, &ch, 1); 
      printf("%c", ch); 
   }  while (!eof(handle)); 

   close(handle); 
   return 0; 
} 
  

                             返回目录 





版权所有(C) 潇逸天地
Copyright by 潇 逸 1999 
建议用 IE4.0 800*600真彩色浏览本站以达到最好效果
网站制作:潇 逸(周 炜) 







版权所有(C) 潇逸天地
Copyright by 潇 逸 1999 
建议用 IE4.0 800*600真彩色浏览本站以达到最好效果
网站制作:潇 逸(周 炜) 

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -