【转帖】C语言的常用库函数使用方法分析及用途

  absread()读磁盘绝对扇区函数

  原形:int absread(int drive,int num,int sectnum,void *buf)

  功能:从drive指定的驱动器磁盘上,sectnum指定的逻辑扇区号开始读取(通过DOS中断0x25读取)num个(最多64K个)扇区的内容,储存于buf所指的缓冲区中。

  参数:drive=0对应A盘,drive=1对应B盘。

  返回值:0:成功;-1:失败。

  头文件:dos.h

  abswrite()写磁盘绝对扇区函数

  原形:int abswrite(int drive,int nsects,int lsect,void *buffer)

  drive=0(A驱动器)、1(B驱动器)、

  nsects=要写的扇区数(最多64K个);

  lsect=起始逻辑扇区号;

  buffer=要写入数据的内存起始地址。

  功能:将指定内容写入(调用DOS中断0x26)磁盘上的指定扇区,即使写入的地方是磁盘的逻辑结构、文件、FAT表和目录结构所在的扇区,也照常进行。

  返回值:0:成功;-1:失败。

  头文件:dos.h

  atof()将字符串转换成浮点数的函数

  原形:double atof(const char *s)

  功能:把s所指向的字符串转换成double类型。

  s格式为:符号 数字.数字 E符号 数字

  返回值:字符串的转换值。

  头文件:math.h、stdlib.h

  atoi()将字符串转换成整型数的函数

  原形:int atoi(const char *s)

  功能:把s所指向的字符串转换成int类型。

  s格式为:符号 数字

  返回值:字符串的转换值。若出错则返回0。

  头文件:stdlib.h

  atol()将字符串转换成长整型数的函数

  原形:long atol(const char *s)

  功能:把s所指向的字符串转换成long int类型。

  s格式为:符号 数字

  返回值:字符串的转换值。若出错则返回0。

  头文件:stdlib.h

  bcd()把一个数转换成对应的BCD码的函数

  原形:bcd bcd(int x)

  bcd bcd(double x)

  bcd bcd(double x,int decimals)

  注意:BCD码的精度可达17位。参数decimals是可选的,用来指定转换后小数点后的位数。

  头文件:bcd.h

  bdos()

  原形∶int bdos(int fnum,unsigned dx,unsigned al)

  其中fnum是系统调用号;dx是传给寄存器DX的值;al是传给寄存器AL的值;

  功能∶DOS系统调用(INT21H)

  返回值∶AX中的值

  biosdisk()调用BIOS磁盘驱动程序函数

  原形:char biosdisk(int cmd,int drive,int head,int track,int sector,int nsects,void *buffer)

  功能:使用中断0x13,直接调用BIOS进行磁盘操作

  参数:(1)cmd:

  2-数据以每扇区512字节的格式读入buffer,起始扇区由head、track和sector定,扇区数由nsects定。

  3-将buffer中的数据按每扇区512字节写入磁盘。

  4-对扇区进行数据校验。

  6-格式化一个磁盘并对化扇区设置化标志。

  8-返回当前驱动器参数在buffer的前4个字节中。

  10-长读,每扇区读入512字节加上额外的4个字节。

  11-长写,每扇区写入512字节加上额外的4个字节。

  (2)drive:0-第一个软驱;1-第二个软驱;0x80-第一个硬驱

  (3)head:磁头

  (4)track:磁道

  (5)sector:扇区

  (6)nsects:扇区数

  (7)buffer:数据缓冲区,定义为unsigned char buffer[];

  返回值:0x00-操作成功

  0x01-错误命令

  0x03-企图写具有写保护的磁盘

  0x07-驱动器参数设置错误

  0x10-磁盘读/CRC/ECC错误

  头文件:bios.h

  注:对于硬盘主引导记录扇区head=0,track=0,sector=1

 

  outport()输出一个字到端口中的函数

  原形:void outport(int portid,int value)

  调用方式:outport(0x端口号,要输出的字);

  功能:往指定端口地址输出一个字。

  头文件:dos.h

  outportb()输出一个字节到端口中的函数

  原形:void outportb(int portid,unsigned char value)

  调用方式:outportb(0x端口号,要输出的字节);

  功能:往指定端口地址输出一个字节。

  附:PC I/O地址分配

  PC只用了10位地址线(A0-A9)进行译码,其寻址的范围为0H-3FFH,共有1024个I/O地址。这1024个地址中前半段(A9=0,范围为0H-1FFH)是属于主机板I/O译码,后半段(A9=1,范围为200H-3FFH)则是用来扩展插槽上的I/O译码用。

  I/O端口功能表

  ———————————————————————————

  I/O地址 功能、用途

  ———————————————————————————

  0    DMA通道0,内存地址寄存器(DMA控制器1(8237))

  1    DMA通道0, 传输计数寄存器

  2    DMA通道1,内存地址寄存器

  3    DMA通道1, 传输计数寄存器

  4    DMA通道2,内存地址寄存器

  5    DMA通道2, 传输计数寄存器

  6    DMA通道3,内存地址寄存器

  7    DMA通道3, 传输计数寄存器

  8    DMA通道0-3的状态寄存器

  AH    DMA通道0-3的屏蔽寄存器

  BH    DMA通道0-3的方式寄存器

  CH    DMA清除字节指针

  DH    DMA主清除字节

  EH    DMA通道0-3的清屏蔽寄存器

  FH    DMA通道0-3的写屏蔽寄存器

  19H   DMA起始寄存器

  20H-3FH 可编程中断控制器1(8259)使用

  40H   可编程中断计时器(8253)使用,读/写计数器0

  41H   可编程中断计时器寄存器

  42H   可编程中断计时器杂项寄存器

  43H   可编程中断计时器,控制字寄存器

  44H   可编程中断计时器,杂项寄存器(AT)

  47H   可编程中断计时器,计数器0的控制字寄存器

  48H-5FH 可编程中断计时器使用

  60H-61H 键盘输入数据缓冲区

  61H   AT:8042键盘控制寄存器/XT:8255输出寄存器

  62H   8255输入寄存器

  63H   8255命令方式寄存器

  64H   8042键盘输入缓冲区/8042状态

  65H-6FH 8255/8042专用

  70H   CMOS RAM地址寄存器

  71H   CMOS RAM数据寄存器

  80H   生产测试端口

  81H   DMA通道2,页表地址寄存器

  82H   DMA通道3,页表地址寄存器

  83H   DMA通道1,页表地址寄存器

  87H   DMA通道0,页表地址寄存器

  89H   DMA通道6,页表地址寄存器

  8AH   DMA通道7,页表地址寄存器

  8BH   DMA通道5,页表地址寄存器

  8FH   DMA通道4,页表地址寄存器

  93H-9FH DMA控制器专用

  A0H   NM1屏蔽寄存器/可编程中断控制器2

  A1H   可编程中断控制器2屏蔽

  C0H   DMA通道0,内存地址寄存器(DMA控制器2(8237))

  C2H   DMA通道0, 传输计数寄存器

  C4H   DMA通道1,内存地址寄存器

  C6H   DMA通道1, 传输计数寄存器

 

  C8H   DMA通道2,内存地址寄存器

  CAH   DMA通道2, 传输计数寄存器

  CCH   DMA通道3,内存地址寄存器

  CEH   DMA通道3, 传输计数寄存器

  D0H   DMA状态寄存器

  D2H   DMA写请求寄存器

  D4H   DMA屏蔽寄存器

  D6H   DMA方式寄存器

  D8H   DMA清除字节指针

  DAH   DMA主清

  DCH   DMA清屏蔽寄存器

  DEH   DMA写屏蔽寄存器

  DFH-EFH 保留

  F0H-FFH 协处理器使用

  100H-16FH保留

  170H   1号硬盘数据寄存器

  171H   1号硬盘错误寄存器

  172H   1号硬盘数据扇区计数

  173H   1号硬盘扇区数

  174H   1号硬盘柱面(低字节)

  175H   1号硬盘柱面(高字节)

  176H   1号硬盘驱动器/磁头寄存器

  177H   1号硬盘状态寄存器

  1F0H   0号硬盘数据寄存器

  1F1H   0号硬盘错误寄存器

  1F2H   0号硬盘数据扇区计数

  1F3H   0号硬盘扇区数

  1F4H   0号硬盘柱面(低字节)

  1F5H   0号硬盘柱面(高字节)

  1F6H   0号硬盘驱动器/磁头寄存器

  1F7H   0号硬盘状态寄存器

  1F9H-1FFH保留

  200H-20FH游戏控制端口

  210H-21FH扩展单元

  278H   3号并行口,数据端口

  279H   3号并行口,状态端口

  27AH   3号并行口,控制端口

  2B0H-2DFH保留

  2E0H   EGA/VGA使用

  2E1H   GPIP(0号适配器)

  2E2H   数据获取(0号适配器)

  2E3H   数据获取(1号适配器)

  2E4H-2F7H保留

  2F8H   2号串行口,发送/保持寄存器(RS232接口卡2)

  2F9H   2号串行口,中断有效寄存器

  2FAH   2号串行口,中断ID寄存器

  2FBH   2号串行口,线控制寄存器

  2FCH   2号串行口,调制解调控制寄存器

  2FDH   2号串行口,线状态寄存器

  2FEH   2号串行口,调制解调状态寄存器

  2FFH   保留

  300H-31FH原形卡

  320H   硬盘适配器寄存器

  322H   硬盘适配器控制/状态寄存器

  324H   硬盘适配器提示/中断状态寄存器

  325H-347H保留

  348H-357H DCA3278

  366H-36FH PC网络

  372H    软盘适配器数据输出/状态寄存器

  375H-376H 软盘适配器数据寄存器

  377H    软盘适配器数据输入寄存器

  378H    2号并行口,数据端口

  379H    2号并行口,状态端口

  37AH    2号并行口,控制端口

  380H-38FH SDLC及BSC通讯

  390H-393H Cluster适配器0

  3A0H-3AFH BSC通讯

  3B0H-3B H MDA视频寄存器

  3BCH    1号并行口,数据端口

  3BDH    1号并行口,状态端口

  3BEH    1号并行口,控制端口

  3C0H-3CFH EGA/VGA视频寄存器

  3D0H-3D7H CGA视频寄存器

  3F0H-3F7H 软盘控制器寄存器

  3F8H    1号串行口,发送/保持寄存器(RS232接口卡1)

  3F9H    1号串行口,中断有效寄存器

  3FAH    1号串行口,中断ID寄存器

  3FBH    1号串行口,线控制寄存器

  3FCH    1号串行口,调制解调控制寄存器

  3FDH    1号串行口,线状态寄存器

  3FEH    1号串行口,调制解调状态寄存器

  3FFH    保留

  —————————————————————————-

 

  outtextxy()在指定位置显示一字符串的函数

  原形:void far outtextxy(int x,int y,char far *textstring)

  功能:按照当前对齐方式和当前字体、方向、大小在视区中给定位置显示一文本字符串。

  注意:用textwidth和textheight函数决定字符串的尺寸大小。

  头文件:graphics.h

  peek()返回指定内存中字的函数

  原形:int peek(int seg,unsigned offset)

  功能:返回地址为seg:offset的字单元的值

  头文件:dos.h

  peekb()返回指定内存中字节的函数

  原形:char peekb(int seg,unsigned offset)

  功能:返回地址为seg:offset的字节单元的值

  poke()在指定的内存中存储一个字的函数

  原形:void poke(int seg,unsigned offset,int word)

  功能:把word的16位值放到地址为seg:offset的字单元中

  pokeb()在指定的内存中存储一个字节的函数

  原形:void pokeb(int seg,unsigned offset,int byte)

  功能:把byte的8位值放到地址为seg:offset的字节单元中

  pow()

  原形∶double pow(double b,double exp)

  功能∶求以b为底的exp次幂的值

  头文件∶math.h

  printf()写格式化输出到stdout的函数

  使用方式:例

  ①printf("%f",实型变量);

  ②printf("%f",(*函数指针名)(参数));

  ③printf("%c",字符变量);

  ④printf("%c",*字符串变量名即字符串地址);

  只显示字符串的第一个字符。

  ⑤printf("%s",字符串数组名即字符串数组地址);

  ⑥printf("%-10s",字符串变量名);

  显示字符串时限定十位(不足则补空格),并靠左端对齐。

  ⑦printf("%s",*二级指针变量);

  ⑧printf("字符串%05d/n",整型变量);

  先显示字符串,然后显示整型变量的值(限五位,不足则补零),最后换行。

  注:

  1.① 需先定义 float 实型变量;

  ② 需先定义 float (*函数指针名)(); 并有相应的函数

  ③ 需先定义 char 字符变量='单个字符';

  ④⑥需先定义 char *字符串变量名; 并赋值

  ⑤ 需先定义 char 字符串数组名[]="字符串";

  ⑦ 需先定义 char **二级指针变量

  2.其它转换字符(在%后)有

  ① o 整型数以无符号的八进制形式输出

  ② x 整型数和伪变量以无符号的十六进制形式输出

  ③ u 整型数以无符号的十进制形式输出

  ④ e 浮点数或双精度浮点数以指数形式输出

  ⑤ g 选用e或f格式中输出位数较短的形式

  ⑥ p 以无符号的十六进制形式输出变量的地址。若要输出函数的地址,远指针用Fp;近指针用Np。

  putch()向屏幕输出字符的函数

  使用方式:

  ① putch('转义字符');

  ② putch('单个字符');

  ③ putch(字符变量);

  注:③需先定义 char 字符变量='单个字符';

  头文件:conio.h

  putchar()在stdout上输出字符的宏

  原形:int putchar(int c)

  返回值:成功返回字符c,失败返回EOF。

  头文件:stdio.h

  putenv()将字符串放入当前环境中的函数

  原形:int putenv(const char *name)

  用法例:putenv("PATH=C:/B/TC");

  功能:把字符串name加到当前程序运行的环境中。当程序结束后,原环境将得到恢复。

  返回值:0(成功);-1(失败)

  头文件:stdlib.h

 

  putimage()重新写屏函数(输出一个位图象到图形屏幕上的函数)

  功能:将用getimage()函数储存在buf 所指向的内存区域的图形输出到屏幕上。

  原形:

  void far putimage(int left,int top,void far *buf,int op)

  其中op的值决定了图形以何种方式写到屏幕上。

  COPY_PUT 或0 原样复制

  XOR_PUT 或1 与屏幕图形取“异或”后写入

  OR_PUT 或2 与屏幕图形取“或”后写入

  AND_PUT 或3 与屏幕图形取“与”后写入

  NOT_PUT 或4 复制原图形的“逆”

  使用不同的方式将图形写到屏幕上,可以实现图形变换。例如,采用异或方式在原始位置重写,那么,原图将消失。 如果再使用复制方式(COPY_PUT)在一个新的地方重现该图形,就产生了图形的移动。

  头文件:graphics.h

  putpixel()写像素点函数

  原形:void far putpixel(int x,int y,int color)

  头文件:graphics.h

  puts()输出一字符串到stdout(标准输出)的函数

  使用方式:

  ① puts("字符串");

  ② puts(字符串变量名即字符串变量的地址)

  注:②需先定义 char *字符串变量名="字符串";

  头文件:stdio.h

  _read()读文件函数

  原形:int _read(handle,buffer,count)

  int handle;//文件句柄

  void *buffer;//存放读出数据的缓冲区

  unsigned count;//一次读出的字节数

  功能:从由handle指定的文件中读取由count指定字节数的数据到buffer

  返回值:0-0xfffe(实际读出的字节数);-1(错误)

  头文件:io.h

  read()读文件函数

  原形:int read(int handle,void *buf,unsigned len)

  功能:从与handle(从creat、open、dup或dup2调用中得到的句柄)相联的文件中读取len字节到由buf所指的缓冲区中。对于以文本方式打开的文件,read删除读入数据中的回车符。当读到Ctrl-Z字符时返回文件结束。对于磁盘文件,read从当前文件指针处开始读取数据。在读操作完成后,文件指针增量为读入的字节数。对于设备,直接从设备中读字节。

  返回值:读入缓冲区的字节数,如果文件以文本方式打开,则不包括回车符和Ctrl-Z字符。

  头文件:io.h

  realloc()重新分配内存函数

  原形:void *realloc(void *block,size_t size)

  block指向用malloc、calloc或realloc已得到的内存。

  size是重新分配的字节。

  返回值:重分配的块地址。若不能重分配,则返回NULL。

  头文件:stdlib.h

  rectangle()画一个矩形的函数

  原形:void far rectangle(int left,int top,int right,int bottom)

  功能:用当前线性、宽度和画线颜色绘制一个矩形。

  头文件:graphics.h

  remove()删除一个文件的函数

  原形:int remove(const char *filename)

  返回值:0(成功);-1(失败)

  头文件:stdio.h

  rename()文件改名函数

  原形:int rename(const char *oldname,const char *newname)

  注意:如果newname中包含了一个驱动器指示符,它必须与oldname中给出的指示符相同。oldname和newname中的目录可以不同,因此rename函数把文件从一个目录移到另一个目录。不允许使用通配符。

  返回值:0(成功);-1(失败)

  restorecrtmode()恢复屏幕视频模式为调用initgraph前的设置的函数

  原形:void far restorecrtmode(void)

  头文件:graphics.h

  rmdir()删除目录函数

  原形:int rmdir(const char *path)

  注意:删除的目录不能是当前目录,不是根目录,是空目录

  返回值:0(成功);-1(操作出错)

  头文件:dir.h

  _rotl()将一个无符号整形数左循环移位的函数

  原形:unsigned _rotl(unsigned value,int count)

  功能:将value向左循环移动count位。

  返回值:将value向左循环移动count位后的值。

  头文件:stdlib.h

 

  _rotr()将一个无符号整形数右循环移位的函数

  原形:unsigned _rotr(unsigned value,int count)

  功能:将value向右循环移动count位。

  返回值:将value向右循环移动count位后的值。

  头文件:stdlib.h

  scanf()格式化输入函数

  使用格式:scanf("输入格式",输入项系列)

  ① scanf("%f",&实型变量)

  ② scanf("%c",&字符变量)

  ③ scanf("%s",字符串变量)

  ④ scanf("%d",&整型变量)

  注:需先定义以上各种变量如 char *字符串变量;

  searchpath()按dos路径查找一个文件的函数

  原形:char *searchpath(const char *file)

  用法:p=searchpath("文件名"); 先定义char *p;

  功能:搜索dos路径(环境变量中的path=....)来定位由file给出的文件。

  返回值:指向完整路径名字符串的指针。定位失败返回NULL。

  头文件:dir.h

  segread()读段寄存器函数

  原形:void segread(struct SREGS *segp)

  作用:把当前寄存器的值保存到SREGS型机构变量segp中。

  segs.cs=代码段寄存器的值;

  segs.ds=数据段寄存器的值;

  segs.es=附加段寄存器的值;

  segs.ss=堆栈段寄存器的值;

  setactivepage()设置图形输出活动页的函数

  原形:void far setactivepage(int page)

  功能:使page成为当前活动的图形页,其后所有的图形输出操作都在page图形页进行。活动图形页可以不是在屏幕上看到的页。

  头文件:graphics.h

  setcolor()设置当前要画的线颜色的函数

  原形:void far setcolor(int color)

  头文件:graphics.h

  注意:颜色值(EGA/VGA)

  0-BLACK;   1-BLUE;    2-GREEN;

  3-CYAN;    4-RED;    5-MAGENTA;

  6-BROWN;   7-LIGHTGRAY; 8-DARKGRAY;

  9-LIGHTBLUE; 10-LIGHTGREEN;11-LIGHTCYAN;

  12-LIGHTRED; 13-LIGHTMAGENTA;

  14-YELLOW;  15-WHITE

  setdisk()设置当前驱动器的函数

  原形:int setdisk(int drive)

  功能:把由drive指定的驱动器修改成当前驱动器,返回可使用的驱动器数。

  头文件:dir.h

  setgraphmode()将系统设置成图形模式并清屏的函数

  原形:void far setgraphmode(int mode)

  功能:选择一个不同于调用initgraph()函数时所设置的缺省的图形模式。

  返回值:如果给了一个对当前驱动程序来说无效的模式,则返回-10。

  头文件:graphics.h

  setlinestyle()设置当前画线宽度和类型的函数

  原形:

  void far setlinestyle(int linestyle,unsigned upattern,int thickness)

  其中:linestyle=0为实线;1为点线;2为中心线;3为破折线;4为用户定义。

  thickness=1为一个像素宽;3为三个像素宽。

  只有当linestyle=4时,upattern才起作用。

  头文件:graphics.h

  settextstyle()显示字符的当前设置函数

  功能:设置当前输出英文字符的字体、大小和方向。

  调用方式:

  void far settextstyle(int font,int direction,int charsize)

  其中①参数font确定所选定的字体形状,

  DEFAULT_FONT 或0 是8×8位图字体

  TRIPLEX_FONT 或1 是三重矢量字体

  SMALL_FONT 或2 是小号矢量字体

  SANS_SERIF_FONT或3 是无衬线矢量字体

  GOTHIC_FONT 或4 是哥特矢量字体

  ②参数durection字符的显示方向,

  HORIZ_DIR 或0 是水平方向

  VERT_DIR 或1 是垂直方向

  ③参数charsize表示字符放大的倍数,其值为0到10。

 

  setvect()设置中断向量函数

  setvect(int 中断号,void interrupt(*中断函数名))

  功能:把中断服务程序的地址装入中断向量表中。

  调用方法:setvect(中断号,中断函数名即地址);

  (1)得预先定义要代替原函数的新函数

  void interrupt 中断函数名(void)

  {......}

  (2)得先保留原中断函数地址

  void interrupt (*保留函数名)(void);

  保留函数名=getvect(中断号);

  (3)事后得将原中断函数地址装回向量表中

  setvect(中断号,保留函数名);

  setviewport()建立视口的函数

  原形: void far setviewport(int left,int top,int right,int bottom,int clip)

  功能:用左上角坐标left,top和右下角坐标right,bottom建立一个视口,如果clip为1,则超出视口的输出自动被剪裁掉;如果clip为0,则不被剪裁。

  例:setviewport(0,0,100,100,1)建立对角线为0,0和100,100的视口,并带有剪裁功能。

  注:要清除当前视口,用函数clearnviewport()。

  setvisualpage()设置可见的图形页号的函数

  原形:void far setvisualpage(int page)

  功能:使得page成为可见的图形页。

  头文件:graphics.h

  sin()

  原形∶double sin(double arg)

  功能∶计算arg(弧度)的正弦值

  头文件∶math.h

  sprintf()格式化输出到数组的函数

  原形∶int sprintf(buf,format,arg_list)

  其中char *buf;

  功能∶把arg_list参量的值按format的格式输出到buf中。

  例∶sprintf(buffer,"相对扇区号∶%s(其中∶柱面号为%d/磁头号为%d/扇区号为%d)",string,cyls,head,sector);

  其中char buffer[100];

  char *string="  ";

  int cyls,head,sector;

  返回值∶实际写入数组的字符个数。

  头文件∶stdio.h

  strcat()

  原形∶char *strcat(str1,str2)

  功能∶把str2所指的字符串连接到str1所指的字符串后。

  返回值∶指向str1的指针。

  tan()

  原形∶double tan(double arg)

  功能∶计算arg(弧度)的正切值

  头文件∶math.h

  _write()写文件函数

  原形:int _write(handle,buffer,count)

  int handle;//文件的句柄

  void *buffer;//存放数据的缓冲区

  unsigned count;//写入的字节数

  功能:从由buffer指定的缓冲区写入由count指定字节数的数据到由handle指定的文件。返回实际写入的字节数。

  返回值:0-0xfffe(实际写入的字节数);-1(错误)

  头文件:io.h

  write()写文件函数

  原形:int write(int handle,char *buf,unsigned len)

  用法:write(文件句柄,缓冲区地址,缓冲区字节长度<最大65534>);

  功能:将缓冲区的数据写入与handle相联的文件或设备中,handle是从creat、open、dup或dup2调用中得到的文件句柄。对于磁盘或磁盘文件,写操作从当前文件指针处开始,对于用O_APPEND选项打开的文件,写数据之前,文件指针指向EOF;对于设备,字节被直接传送到设备中;

  返回值:实际写入的字节数(不包括回车符),出错时返回-1。

  头文件:io.h

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值