Chinaunix首页 | 论坛 | 博客
  • 博客访问: 676970
  • 博文数量: 35
  • 博客积分: 7010
  • 博客等级: 少将
  • 技术积分: 1772
  • 用 户 组: 普通用户
  • 注册时间: 2007-04-30 16:52
文章分类

全部博文(35)

文章存档

2008年(35)

我的朋友

分类: C/C++

2008-04-16 15:08:04

操作函数,所在函数库为string.hmem.h
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字节长的两个字符串s1s2.些函数按无符号字符比较字节,因此
,
      memcmp("0xFF","\x7F",1)
返回值大于
0.
      memicmp
比较s1s2的前n个字节,不管字符大写或小写
.
      memccpy
source复制字节到destin.复制一结束就发生下列任一情况
:
         (1)
字符ch首选复制到
destin.
         (2)n
个字节已复制到
destin.
      memchr
对字符ch检索s数组的前n个字节.

返回值:

memmovememcpy返回destin
           memset
返回s的值

           memcmp
memicmp─┬─s1返回值小于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…字符串操作函数

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)
比较字符串s1s2的大小,并返回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)
比较字符串s1s2,并返回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)
          
比较字符串s1s2中的前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)
          
比较字符串s1s2中的前maxlen个字符
char    strnset(char *s,int ch,size_t n)
          
将字符串s的前n个字符置于ch
char    strpbrk(const char *s1,const char *s2)
          
扫描字符串s1,并返回在s1s2中均有的字符个数
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,并返回在s1s2中均有的字符个数

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

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
        ┌──────────────────────┐
        │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;  /*
11的天数
,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 1983\n\0
char      *asctime(struct tm *tm)
              
本函数把指定的tm结构类的时间转换成下列格式的字符串
:
              Mon Nov 21 11:31:54 1983\n\0
double    difftime(time_t time2,time_t time1)
              
计算结构time2time1之间的时间差距(以秒为单位
)
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格式,并返回
              
自格林威治时间197011日凌晨起到现在的秒数
void        unixtodos(long utime,struct date *dateptr,struct time *timeptr)
              
本函数将自格林威治时间197011日凌晨起到现在的秒数utime转换成
              DOS
格式并保存于用户所指的结构dateptrtimeptr
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)

本函数给出自格林威治时间197011日凌晨至现在所经过的秒数,

并将该值存于tloc所指的单元中.
int          stime(long *tp)
本函数将tp所指的时间(例如由time所返回的时间)写入计算机中.

阅读(1553) | 评论(0) | 转发(0) |
0

上一篇:C库函数(三)

下一篇:C程序优化之路

给主人留下些什么吧!~~