存貯分配子程式,所在函數庫為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; /*自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 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)
計算結構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所返回的時間)
寫入電腦中.