unsigned imagesize(int left, int top, int right, int bottom);
获取保存位图像所需的字节数
1.2 演示示例
#include<graphics.h>#include<stdlib.h>#include<stdio.h>#defineARROW_SIZE10voiddraw_arrow(int x,int y);intmain(){int gdriver = DETECT, gmode, errorcode;void*arrow;int x, y, maxx;unsignedint size;initgraph(&gdriver,&gmode,"");
errorcode =graphresult();if(errorcode != grOk){printf("Graphics error: %s\n",grapherrormsg(errorcode));printf("Press any key to halt:");getch();exit(1);}
maxx =getmaxx();
x =0;
y =getmaxy()/2;draw_arrow(x, y);
size =imagesize(x, y-ARROW_SIZE, x+(4*ARROW_SIZE), y+ARROW_SIZE);// 分配内存以保存图像
arrow =malloc(size);// 抓取图像getimage(x, y-ARROW_SIZE, x+(4*ARROW_SIZE), y+ARROW_SIZE, arrow);// 重复,直到按键被按下while(!kbhit()){// 擦除旧图像putimage(x, y-ARROW_SIZE, arrow, XOR_PUT);
x += ARROW_SIZE;if(x >= maxx)
x =0;// 绘制新图像putimage(x, y-ARROW_SIZE, arrow, XOR_PUT);}free(arrow);closegraph();return0;}voiddraw_arrow(int x,int y){// 在屏幕上画一个箭头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);}
1.3 运行结果
2. initgraph
2.1 函数说明
函数声明
函数功能
void initgraph( int *graphdriver, int *graphmode, char *pathtodriver );
初始化图形系统
2.2 演示示例
#include<graphics.h>#include<stdlib.h>#include<stdio.h>intmain(){int gdriver = DETECT, gmode, errorcode;// 初始化图形系统initgraph(&gdriver,&gmode,"");
errorcode =graphresult();if(errorcode != grOk){printf("Graphics error: %s\n",grapherrormsg(errorcode));printf("Press any key to halt:");getch();exit(1);}line(0,0,getmaxx(),getmaxy());getch();closegraph();return0;}
2.3 运行结果
3. inport
3.1 函数说明
函数声明
函数功能
int inport(int protid);
从硬件端口中输入
3.2 演示示例
#include<stdio.h>#include<dos.h>intmain(){int result;int port =0;// 串行端口 0// 从硬件端口中输入
result =inport(port);printf("Word read from port %d = 0x%X\n", port, result);return0;}
4. insline
4.1 函数说明
函数声明
函数功能
void insline(void);
在文本窗口中插入一个空行
4.2 演示示例
#include<conio.h>intmain(){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();return0;}
5. installuserdriver
5.1 函数说明
函数声明
函数功能
int installuserdriver(char *name, int (*detect)(void));
int intdos(union REGS *inregs, union REGS *outregs);
通用DOS接口
9.2 演示示例
#include<stdio.h>#include<dos.h>/*
删除文件,成功返回0,失败返回非0。
*/intdelete_file(char near *filename){union REGS regs;int ret;
regs.h.ah =0x41;
regs.x.dx =(unsigned) filename;
ret =intdos(®s,®s);// 如果设置了进位标志,则出现错误return(regs.x.cflag ? ret :0);}intmain(void){int err;
err =delete_file("NOTEXIST.$$$");if(!err)printf("Able to delete NOTEXIST.$$$\n");elseprintf("Not Able to delete NOTEXIST.$$$\n");return0;}
10. intdosx
10.1 函数说明
函数声明
函数功能
int intdosx(union REGS *inregs, union REGS *outregs, struct SREGS *segregs);
通用DOS中断接口
10.2 演示示例
#include<stdio.h>#include<dos.h>/*
删除文件,成功返回0,失败返回非0。
*/intdelete_file(char far *filename){union REGS regs;structSREGS sregs;int ret;
regs.h.ah =0x41;
regs.x.dx =FP_OFF(filename);
sregs.ds =FP_SEG(filename);
ret =intdosx(®s,®s,&sregs);// 如果设置了进位标志,则出现错误return(regs.x.cflag ? ret :0);}intmain(void){int err;
err =delete_file("NOTEXIST.$$$");if(!err)printf("Able to delete NOTEXIST.$$$\n");elseprintf("Not Able to delete NOTEXIST.$$$\n");return0;}
11. intr
11.1 函数说明
函数声明
函数功能
void intr(int intr_num, struct REGPACK *preg);
改变软中断接口
11.2 演示示例
#include<stdio.h>#include<string.h>#include<dir.h>#include<dos.h>#defineCF1// 进位标志intmain(void){char directory[80];structREGPACK reg;printf("Enter directory to change to: ");gets(directory);
reg.r_ax =0x3B<<8;// 将3Bh转换为AH
reg.r_dx =FP_OFF(directory);
reg.r_ds =FP_SEG(directory);intr(0x21,®);if(reg.r_flags & CF)printf("Directory change failed\n");getcwd(directory,80);printf("The current directory is: %s\n", directory);return0;}
12. ioctl
12.1 函数说明
函数声明
函数功能
int ioctl(int fd, int cmd, ...) ;
控制 I/O 设备
参数
描述
fd
文件描述符
cmd
交互协议,设备驱动将根据 cmd 执行对应操作
…
可变参数arg,依赖 cmd 指定长度以及类型
12.2 演示示例
#include<stdio.h>#include<dir.h>#include<io.h>intmain(void){int stat =ioctl(0,8,0,0);if(!stat)printf("Drive %c is removable.\n",getdisk()+'A');elseprintf("Drive %c is not removable.\n",getdisk()+'A');return0;}
13. isatty
13.1 函数说明
函数声明
函数功能
int isatty(int handle);
检查设备类型
13.2 演示示例
#include<stdio.h>#include<io.h>intmain(void){int handle;
handle =fileno(stdprn);if(isatty(handle))printf("Handle %d is a device type\n", handle);elseprintf("Handle %d isn't a device type\n", handle);return0;}
13.3 运行结果
14. ilogb,ilogbf,ilogbfl
14.1 函数说明
函数声明
函数功能
int ilogb (double x);
获取 x 的对数的积分部分(double)
int ilogbf (float x);
获取 x 的对数的积分部分(float)
int ilogbl (long double x);
获取 x 的对数的积分部分(long double)
如果计算成功,则返回 x 的对数的整数部分。如果 x 为 0,则此函数返回FP_ILOGB0 并报告错误。如果 x 是NaN值,则此函数返回 FP_ILOGBNAN 并报告错误。如果 x 是正无穷大或负无穷大,此函数将返回 INT_MAX 并报告错误。
14.2 演示示例
#include<stdio.h>#include<math.h>intmain(){int result;double x =15.0;
result =ilogb(x);printf("The integral part of the logarithm of double value %lf is %d\n", x, result);float xf =15.0f;
result =ilogbf(xf);printf("The integral part of the logarithm of float value %f is %d\n", xf, result);longdouble xL =15.0L;
result =ilogbl(xL);printf("The integral part of the logarithm of long double value %Lf is %d\n", xL, result);return0;}
注意: let canvas document.getElementById(webgl) canvas.width window.innerWidth canvas.height window.innerHeight let radio window.innerWidth/window.innerHeight; let ctx canvas.getContext(webgl) 由于屏幕长宽像素不一样,导致了长宽像素…
目录
一、介绍
二、原生Ajax
三、Axios
四、案例分析 一、介绍
① 概念:Asynchronous JavaScript And XML,异步的JavaScript和XML。
② 作用:
数据交换:通过Ajax可以给服务器发送请求,并获取服务器响应的数据。…