首页 服务器 编程 必备知识 搜索引擎 圩日手册
站内搜索
最近浏览
推荐文章
热文排行

收藏.C.库函数手册.卷三


int biodquip() 检查设备,函数返回一字节,该字节每一位表示一个信息,如下:
   第15位 打印机号
   第14位 打印机号
   第13位 未使用
   第12位 连接游戏I/O
   第11位 RS232端口号
   第 8位 未使用
   第 7位 软磁盘号
   第 6位 软磁盘号,
             00为1号驱动器,01为2号驱动器,10为3号驱动器,11为4号驱动器
   第 5位 初始化
   第 4位 显示器模式
             00为未使用,01为40x25BW彩色显示卡
             10为80x25BW彩色显示卡,11为80x25BW单色显示卡
   第 3位 母扦件
   第 2位 随机存贮器容量,00为16K,01为32K,10为48K,11为64K
   第 1位 浮点共用处理器
   第 0位 从软磁盘引导

int bioskey(int cmd)本函数用来执行各种键盘操作,由cmd确定操作。
   cmd可为以下值:
   0 返回敲键盘上的下一个键。若低8位为非0,即为ASCII字符;若低8位为0,
      则返回扩充了的键盘代码。
   1 测试键盘是否可用于读。返回0表示没有键可用;否则返回下一次敲键之值。
      敲键本身一直保持由下次调用具的cmd值为0的bioskey所返回的值。
   2 返回当前的键盘状态,由返回整数的每一个位表示,见下表:
       ┌──┬───────────┬───────────┐
       │ 位 │为0时意义              │为1时意义          │
       ├──┼───────────┼───────────┤
       │ 7   │插入状态             │改写状态              │
       │ 6   │大写状态             │小写状态              │
       │ 5   │数字状态,NumLock灯亮   │光标状态,NumLock灯熄 │
       │ 4   │ScrollLock灯亮          │ScrollLock灯熄        │
       │ 3   │Alt按下                │Alt未按下          │
       │ 2   │Ctrl按下                │Ctrl未按下          │
       │ 1   │左Shift按下             │左Shift未按下       │
       │ 0   │右Shift按下             │右Shift未按下       │
       └──┴───────────┴───────────┘
int biosmemory()返回内存大小,以K为单位.
int biosprint(int cmd,int byte,int port)控制打印机的输入/输出.
   port为打印机号,0为LPT1,1为LPT2,2为LPT3等
   cmd可以为以下值:
      0 打印字符,将字符byte送到打印机
      1 打印机端口初始化
      2 读打印机状态
   函数返回值由以下位值组成表示当前打印机状态
      0x01 设备时间超时
      0x08 输入/输出错误
      0x10 选择的
      0x20 走纸
      0x40 认可
      0x80 不忙碌

int biostime(int cmd,long newtime)计时器控制,cmd为功能号,可为以下值
       0 函数返回计时器的当前值
       1 将计时器设为新值newtime

struct country *country(int countrycmode,struct country *countryp)
   本函数用来控制某一国家的相关信息,如日期,时间,货币等.
   若countryp=-1时,当前的国家置为countrycode值(必须为非0).否则,由countryp
   所指向的country结构用下列的国家相关信息填充:
   (1)当前的国家(若countrycode为0或2)由countrycode所给定的国家.
   结构country定义如下:
         ┌────────────────────┐
   │struct country                                                           │
   │{                                                                            │
   │ int   co_date;       /*日期格式*/                         │
   │ char co_curr[5];    /*货币符号*/                          │
   │ char co_thsep[2];     /*数字分隔符*/                    │
   │ char co_desep[2];     /*小数点*/                         │
   │ char co_dtsep[2];     /*日期分隔符*/                    │
   │ char co_tmsep[2];     /*时间分隔符*/                │
   │ char co_currstyle; /*货币形式*/                      │
   │ char co_digits;    /*有效数字*/                          │
   │ int (far *co_case)(); /*事件处理函数*/                 │
   │ char co_dasep;        /*数据分隔符*/                │
   │ char co_fill[10];     /*补充字符*/                         │
   │ }                                                                            │
   └────────────────────┘
   co_date的值所代表的日期格式是:
       0 月日年 1 日月年     2 年月日
   co_currstrle的值所代表的货币显示方式是
       0 货币符号在数值前,中间无空格
       1 货币符号在数值后,中间无空格
       2 货币符号在数值前,中间有空格
       3 货币符号在数值后,中间有空格


操作函数,所在函数库为string.h、mem.h
Code:
mem…操作存贮数组
void *memccpy(void *destin,void *source,unsigned char ch,unsigned n)
void *memchr(void *s,char ch,unsigned n)
void *memcmp(void *s1,void *s2,unsigned n)
int memicmp(void *s1,void *s2,unsigned n)
void *memmove(void *destin,void *source,unsigned n)
void *memcpy(void *destin,void *source,unsigned n)
void *memset(void *s,char ch,unsigned n)
这些函数,mem…系列的所有成员均操作存贮数组.在所有这些函数中,数组是n字节长.
memcpy从source复制一个n字节的块到destin.如果源块和目标块重迭,则选择复制方向,
   以例正确地复制覆盖的字节.
memmove与memcpy相同.
memset将s的所有字节置于字节ch中.s数组的长度由n给出.
memcmp比较正好是n字节长的两个字符串s1和s2.些函数按无符号字符比较字节,因此,
   memcmp("0xFF","x7F",1)返回值大于0.
memicmp比较s1和s2的前n个字节,不管字符大写或小写.
memccpy从source复制字节到destin.复制一结束就发生下列任一情况:
   (1)字符ch首选复制到destin.
   (2)n个字节已复制到destin.
memchr对字符ch检索s数组的前n个字节.
返回值:memmove和memcpy返回destin
   memset返回s的值
   memcmp和memicmp─┬─若s1<s2返回值小于0
                     ├─若s1=s2返回值等于0
                     └─若s1>s2返回值大于0
   memccpy若复制了ch,则返回直接跟随ch的在destin中的字节的一个指针;
             否则返回NULL
   memchr返回在s中首先出现ch的一个指针;如果在s数组中不出现ch,就返回NULL.

void   movedata(int segsrc,int offsrc,
            int segdest,int offdest,
            unsigned numbytes)
   本函数将源地址(segsrc:offsrc)处的numbytes个字节
   复制到目标地址(segdest:offdest)
void   movemem(void *source,void *destin,unsigned len)
   本函数从source处复制一块长len字节的数据到destin.若源地址和目标地址字符串
   重迭,则选择复制方向,以便正确的复制数据.
void   setmem(void *addr,int len,char value)
   本函数把addr所指的块的第一个字节置于字节value中.


str…字符串操作函数
Code:
char stpcpy(char *dest,const char *src)
       将字符串src复制到dest
char strcat(char *dest,const char *src)
       将字符串src添加到dest末尾
char strchr(const char *s,int c)
       检索并返回字符c在字符串s中第一次出现的位置
int strcmp(const char *s1,const char *s2)
       比较字符串s1与s2的大小,并返回s1-s2
char strcpy(char *dest,const char *src)
       将字符串src复制到dest
size_t strcspn(const char *s1,const char *s2)
       扫描s1,返回在s1中有,在s2中也有的字符个数
char strdup(const char *s)
       将字符串s复制到最近建立的单元
int stricmp(const char *s1,const char *s2)
       比较字符串s1和s2,并返回s1-s2
size_t strlen(const char *s)
       返回字符串s的长度
char strlwr(char *s)
       将字符串s中的大写字母全部转换成小写字母,并返回转换后的字符串
char strncat(char *dest,const char *src,size_t maxlen)
       将字符串src中最多maxlen个字符复制到字符串dest中
int strncmp(const char *s1,const char *s2,size_t maxlen)
       比较字符串s1与s2中的前maxlen个字符
char strncpy(char *dest,const char *src,size_t maxlen)
       复制src中的前maxlen个字符到dest中
int strnicmp(const char *s1,const char *s2,size_t maxlen)
       比较字符串s1与s2中的前maxlen个字符
char strnset(char *s,int ch,size_t n)
       将字符串s的前n个字符置于ch中
char strpbrk(const char *s1,const char *s2)
       扫描字符串s1,并返回在s1和s2中均有的字符个数
char strrchr(const char *s,int c)
       扫描最后出现一个给定字符c的一个字符串s
char strrev(char *s)
       将字符串s中的字符全部颠倒顺序重新排列,并返回排列后的字符串
char strset(char *s,int ch)
       将一个字符串s中的所有字符置于一个给定的字符ch
size_t strspn(const char *s1,const char *s2)
       扫描字符串s1,并返回在s1和s2中均有的字符个数
char strstr(const char *s1,const char *s2)
       扫描字符串s2,并返回第一次出现s1的位置
char strtok(char *s1,const char *s2)
       检索字符串s1,该字符串s1是由字符串s2中定义的定界符所分隔
char strupr(char *s)
       将字符串s中的小写字母全部转换成大写字母,并返回转换后的字符串



存贮分配子程序,所在函数库为dos.h、alloc.h、malloc.h、stdlib.h、process.h
Code:
int allocmem(unsigned size,unsigned *seg)利用DOS分配空闲的内存,
       size为分配内存大小,seg为分配后的内存指针
int freemem(unsigned seg)释放先前由allocmem分配的内存,seg为指定的内存指针
int setblock(int seg,int newsize)本函数用来修改所分配的内存长度,
       seg为已分配内存的内存指针,newsize为新的长度

int brk(void *endds)
       本函数用来改变分配给调用程序的数据段的空间数量,新的空间结束地址为endds
char   *sbrk(int incr)
       本函数用来增加分配给调用程序的数据段的空间数量,增加incr个字节的空间

unsigned long coreleft() 本函数返回未用的存储区的长度,以字节为单位
void   *calloc(unsigned nelem,unsigned elsize)分配nelem个长度为elsize的内存空间
       并返回所分配内存的指针
void   *malloc(unsigned size)分配size个字节的内存空间,并返回所分配内存的指针
void free(void *ptr)释放先前所分配的内存,所要释放的内存的指针为ptr
void   *realloc(void *ptr,unsigned newsize)改变已分配内存的大小,ptr为已分配有内
       存区域的指针,newsize为新的长度,返回分配好的内存指针.

long farcoreleft() 本函数返回远堆中未用的存储区的长度,以字节为单位
void far *farcalloc(unsigned long units,unsigned long unitsz)
          从远堆分配units个长度为unitsz的内存空间,并返回所分配内存的指针
void   *farmalloc(unsigned long size)分配size个字节的内存空间,
   并返回分配的内存指针
void farfree(void far *block)释放先前从远堆分配的内存空间,
       所要释放的远堆内存的指针为block
void far *farrealloc(void far *block,unsigned long newsize)改变已分配的远堆内
          存的大小,block为已分配有内存区域的指针,newzie为新的长度,返回分配好
          的内存指针


时间日期函数,函数库为time.h、dos.h
在时间日期函数里,主要用到的结构有以下几个:
总时间日期贮存结构tm
Code:
┌──────────────────────┐
│struct tm                                                                         │
│{                                                                                     │
│ int tm_sec; /*秒,0-59*/                                              │
│ int tm_min; /*分,0-59*/                                              │
│ int tm_hour;   /*时,0-23*/                                              │
│ int tm_mday;   /*天数,1-31*/                                        │
│ int tm_mon; /*月数,0-11*/                                            │
│ int tm_year;   /*自1900的年数*/                                  │
│ int tm_wday;   /*自星期日的天数0-6*/                         │
│ int tm_yday;   /*自1月1日起的天数,0-365*/                │
│ int tm_isdst; /*是否采用夏时制,采用为正数*/              │
│ }                                                                                      │
└──────────────────────┘
日期贮存结构date
┌───────────────┐
│struct date                                        │
│{                                                       │
│ int da_year; /*自1900的年数*/       │
│ char da_day; /*天数*/                   │
│ char da_mon; /*月数 1=Jan*/       │
│ }                                                       │
└───────────────┘
时间贮存结构time
┌────────────────┐
│struct time                                              │
│{                                                             │
│ unsigned char ti_min;   /*分钟*/              │
│ unsigned char ti_hour; /*小时*/          │
│ unsigned char ti_hund;                         │
│ unsigned char ti_sec;   /*秒*/                │
│                                │
└────────────────┘
char    *ctime(long *clock)
         本函数把clock所指的时间(如由函数time返回的时间)转换成下列格式的
         字符串:Mon Nov 21 11:31:54 1983n
char    *asctime(struct tm *tm)
         本函数把指定的tm结构类的时间转换成下列格式的字符串:
         Mon Nov 21 11:31:54 1983n
double     difftime(time_t time2,time_t time1)
         计算结构time2和time1之间的时间差距(以秒为单位)
struct tm *gmtime(long *clock)本函数把clock所指的时间(如由函数time返回的时间)
         转换成格林威治时间,并以tm结构形式返回
struct tm *localtime(long *clock)本函数把clock所指的时间(如函数time返回的时间)
         转换成当地标准时间,并以tm结构形式返回
void    tzset()本函数提供了对UNIX操作系统的兼容性
long    dostounix(struct date *dateptr,struct time *timeptr)
         本函数将dateptr所指的日期,timeptr所指的时间转换成UNIX格式,并返回
         自格林威治时间1970年1月1日凌晨起到现在的秒数
void    unixtodos(long utime,struct date *dateptr,struct time *timeptr)
         本函数将自格林威治时间1970年1月1日凌晨起到现在的秒数utime转换成
         DOS格式并保存于用户所指的结构dateptr和timeptr中
void    getdate(struct date *dateblk)本函数将计算机内的日期写入结构dateblk
         中以供用户使用
void    setdate(struct date *dateblk)本函数将计算机内的日期改成
         由结构dateblk所指定的日期
void    gettime(struct time *timep)本函数将计算机内的时间写入结构timep中,
         以供用户使用
void    settime(struct time *timep)本函数将计算机内的时间改为
         由结构timep所指的时间
long    time(long *tloc)本函数给出自格林威治时间1970年1月1日凌晨至现在所经
         过的秒数,并将该值存于tloc所指的单元中.
int        stime(long *tp)本函数将tp所指的时间(例如由time所返回的时间)
         写入计算机中.
[wangjy17908]
添加时间:2008-06-11
版权所有(C)2005-2015