Turbo C 2.0 函數中文說明大全 |
Turbo C 2.0 函數中文說明大全 分類函數,所在函數庫為ctype.h int isalpha(int ch) 若ch是字母('A'-'Z','a'-'z')返回非0值,否則返回0 int isalnum(int ch) 若ch是字母('A'-'Z','a'-'z')或數位('0'-'9'),返回非0值,否則返回0 int isascii(int ch) 若ch是字符(ASCII碼中的0-127)返回非0值,否則返回0 int iscntrl(int ch) 若ch是作廢字符(0x7F)或普通控制字符(0x00-0x1F),返回非0值,否則返回0 int isdigit(int ch) 若ch是數位('0'-'9')返回非0值,否則返回0 int isgraph(int ch) 若ch是可列印字符(不含空格)(0x21-0x7E)返回非0值,否則返回0 int islower(int ch) 若ch是小寫字母('a'-'z')返回非0值,否則返回0 int isprint(int ch) 若ch是可列印字符(含空格)(0x20-0x7E)返回非0值,否則返回0 int ispunct(int ch) 若ch是標點字符(0x00-0x1F)返回非0值,否則返回0 int isspace(int ch) 若ch是空格(' '),水準製表符('\t'),回車符('\r'), 走紙換行('\f'),垂直製表符('\v'),換行符('\n'), 返回非0值,否則返回0 int isupper(int ch) 若ch是大寫字母('A'-'Z')返回非0值,否則返回0 int isxdigit(int ch) 若ch是16進制數('0'-'9','A'-'F','a'-'f')返回非0值, 否則返回0 int tolower(int ch) 若ch是大寫字母('A'-'Z')返回相應的小寫字母('a'-'z') int toupper(int ch) 若ch是小寫字母('a'-'z')返回相應的大寫字母('A'-'Z') 數學函數,所在函數庫為math.h、stdlib.h、string.h、float.h int abs(int i) 返回整型參數i的絕對值 double cabs(struct complex znum) 返回復數znum的絕對值 double fabs(double x) 返回雙精度參數x的絕對值 long labs(long n) 返回長整型參數n的絕對值 double exp(double x) 返回指數函數ex的值 double frexp(double value,int *eptr) 返回value=x*2n中x的值,n存貯在eptr中 double ldexp(double value,int exp); 返回value*2exp的值 double log(double x) 返回logex的值 double log10(double x) 返回log10x的值 double pow(double x,double y) 返回x的y次方的值 double pow10(int p) 返回10的p次方的值 double sqrt(double x) 返回x的開方 double acos(double x) 返回x的反餘弦cos-1(x)值,x為弧度 double asin(double x) 返回x的反正弦sin-1(x)值,x為弧度 double atan(double x) 返回x的反正切tan-1(x)值,x為弧度 double atan2(double y,double x) 返回y/x的反正切tan-1(x)值,y的x為弧度 double cos(double x) 返回x的餘弦cos(x)值,x為弧度 double sin(double x) 返回x的正弦sin(x)值,x為弧度 double tan(double x) 返回x的正切tan(x)值,x為弧度 double cosh(double x) 返回x的雙曲餘弦cosh(x)值,x為弧度 double sinh(double x) 返回x的雙曲正弦sinh(x)值,x為弧度 double tanh(double x) 返回x的雙曲正切tanh(x)值,x為弧度 double hypot(double x,double y) 返回直角三角形斜邊的長度(z), x和y為直角邊的長度,z2=x2+y2 double ceil(double x) 返回不小於x的最小整數 double floor(double x) 返回不大於x的最大整數 void srand(unsigned seed) 初始化隨機數發生器 int rand() 產生一個隨機數並返回這個數 double poly(double x,int n,double c[]) 從參數產生一個多項式 double modf(double value,double *iptr) 將雙精度數value分解成尾數和階 double fmod(double x,double y) 返回x/y的餘數 double frexp(double value,int *eptr) 將雙精度數value分成尾數和階 double atof(char *nptr) 將字符串nptr轉換成浮點數並返回這個浮點數 double atoi(char *nptr) 將字符串nptr轉換成整數並返回這個整數 double atol(char *nptr) 將字符串nptr轉換成長整數並返回這個整數 char *ecvt(double value,int ndigit,int *decpt,int *sign) 將浮點數value轉換成字符串並返回該字符串 char *fcvt(double value,int ndigit,int *decpt,int *sign) 將浮點數value轉換成字符串並返回該字符串 char *gcvt(double value,int ndigit,char *buf) 將數value轉換成字符串並存於buf中,並返回buf的指針 char *ultoa(unsigned long value,char *string,int radix) 將無符號整型數value轉換成字符串並返回該字符串,radix為轉換時所用基數 char *ltoa(long value,char *string,int radix) 將長整型數value轉換成字符串並返回該字符串,radix為轉換時所用基數 char *itoa(int value,char *string,int radix) 將整數value轉換成字符串存入string,radix為轉換時所用基數 double atof(char *nptr) 將字符串nptr轉換成雙精度數,並返回這個數,錯誤返回0 int atoi(char *nptr) 將字符串nptr轉換成整型數, 並返回這個數,錯誤返回0 long atol(char *nptr) 將字符串nptr轉換成長整型數,並返回這個數,錯誤返回0 double strtod(char *str,char **endptr)將字符串str轉換成雙精度數,並返回這個數, long strtol(char *str,char **endptr,int base)將字符串str轉換成長整型數, 並返回這個數, int matherr(struct exception *e) 用戶修改數學錯誤返回資訊函數(沒有必要使用) double _matherr(_mexcep why,char *fun,double *arg1p, double *arg2p,double retval) 用戶修改數學錯誤返回資訊函數(沒有必要使用) unsigned int _clear87() 清除浮點狀態字並返回原來的浮點狀態 void _fpreset() 重新初使化浮點數學套裝程式 unsigned int _status87() 返回浮點狀態字 目錄函數,所在函數庫為dir.h、dos.h int chdir(char *path) 使指定的目錄path(如:"C:\\WPS")變成當前的工作目錄,成功返回0 int findfirst(char *pathname,struct ffblk *ffblk,int attrib) 查找指定的文件,成功返回0 pathname為指定的目錄名和文件名,如"C:\\WPS\\TXT" ffblk為指定的保存文件資訊的一個結構,定義如下: ================== struct ffblk { char ff_reserved[21]; /*DOS保留字*/ char ff_attrib; /*文件屬性*/ int ff_ftime; /*文件時間*/ int ff_fdate; /*文件日期*/ long ff_fsize; /*文件長度*/ char ff_name[13]; /*文件名*/ } ================== attrib為文件屬性,由以下字符代表 ========= ======== FA_RDONLY 隻讀文件 FA_LABEL 標籤號 FA_HIDDEN 隱藏文件 FA_DIREC 目錄 FA_SYSTEM 系統文件 FA_ARCH 檔案 ========= ======== 例: struct ffblk ff; findfirst("*.wps",&ff,FA_RDONLY); int findnext(struct ffblk *ffblk) 取匹配finddirst的文件,成功返回0 void fumerge(char *path,char *drive,char *dir,char *name,char *ext) 此函數透過盤符drive(C:、A:等), 路徑dir(\TC、\BC\LIB等), 文件名name(TC、WPS等),擴展名ext(.EXE、.COM等)組成一個文件名存與path中. int fnsplit(char *path,char *drive,char *dir,char *name,char *ext) 此函數將文件名path分解成盤符drive(C:、A:等), 路徑dir(\TC、\BC\LIB等), 文件名name(TC、WPS等),擴展名ext(.EXE、.COM等),並分別存入相應的變數中. int getcurdir(int drive,char *direc) 此函數返回指定驅動器的當前工作目錄名稱。成功返回0 drive 指定的驅動器(0=當前,1=A,2=B,3=C等) direc 保存指定驅動器當前工作路徑的變數 char *getcwd(char *buf,iint n) 此函數取當前工作目錄並存入buf中,直到n個字節長為為止.錯誤返回NULL int getdisk() 取當前正在使用的驅動器,返回一個整數(0=A,1=B,2=C等) int setdisk(int drive) 設置要使用的驅動器drive(0=A,1=B,2=C等), 返回可使用驅動器總數 int mkdir(char *pathname) 建立一個新的目錄pathname,成功返回0 int rmdir(char *pathname) 刪除一個目錄pathname,成功返回0 char *mktemp(char *template) 構造一個當前目錄上沒有的文件名並存於template中 char *searchpath(char *pathname) 利用MSDOS找齣文件filename所在路徑, 此函數使用DOS的PATH變數,未找到文件返回NULL 進程函數,所在函數庫為stdlib.h、process.h void abort() 此函數透過調用具有齣口代碼3的_exit寫一個終止資訊於stderr,並異常終止程式。無返回值 int exec…裝入和運行其他程式 int execl(char *pathname,char *arg0,char *arg1,…,char *argn,NULL) int execle(char *pathname,char *arg0,char *arg1,…, char *argn,NULL,char *envp[]) int execlp(char *pathname,char *arg0,char *arg1,…,NULL) int execlpe(char *pathname,char *arg0,char *arg1,…,NULL,char *envp[]) int execv(char *pathname,char *argv[]) int execve(char *pathname,char *argv[],char *envp[]) int execvp(char *pathname,char *argv[]) int execvpe(char *pathname,char *argv[],char *envp[]) exec函數族裝入並運行程式pathname,並將參數arg0(arg1,arg2,argv[],envp[])傳遞給子程式,齣錯返回-1。 在exec函數族中,尾碼l、v、p、e添加到exec後,所指定的函數將具有某種操作能力。 有尾碼 p時,函數可以利用DOS的PATH變數查找子程式文件。 l時,函數中被傳遞的參數個數固定。 v時,函數中被傳遞的參數個數不固定。 e時,函數傳遞指定參數envp,允許改變子進程的環境, 無尾碼 e時,子進程使用當前程式的環境。 void _exit(int status) 終止當前程式,但不清理現場 void exit(int status) 終止當前程式,關閉所有文件,寫緩衝區的輸齣(等待輸齣), 並調用任何寄存器的"齣口函數",無返回值 int spawn…運行子程式 int spawnl(int mode,char *pathname,char *arg0,char *arg1,…, char *argn,NULL) int spawnle(int mode,char *pathname,char *arg0,char *arg1,…, char *argn,NULL,char *envp[]) int spawnlp(int mode,char *pathname,char *arg0,char *arg1,…, char *argn,NULL) int spawnlpe(int mode,char *pathname,char *arg0,char *arg1,…, char *argn,NULL,char *envp[]) int spawnv(int mode,char *pathname,char *argv[]) int spawnve(int mode,char *pathname,char *argv[],char *envp[]) int spawnvp(int mode,char *pathname,char *argv[]) int spawnvpe(int mode,char *pathname,char *argv[],char *envp[]) spawn函數族在mode模式下運行子程式pathname,並將參數arg0(arg1,arg2,argv[],envp[])傳遞給子程式.齣錯返回-1 mode為運行模式: mode為 P_WAIT 表示在子程式運行完後返回本程式 P_NOWAIT 表示在子程式運行時同時運行本程式(不可用) P_OVERLAY 表示在本程式退齣後運行子程式 在spawn函數族中,尾碼l、v、p、e添加到spawn後,所指定的函數將具有某種操作能力 有尾碼 p時, 函數利用DOS的PATH查找子程式文件 l時, 函數傳遞的參數個數固定. v時, 函數傳遞的參數個數不固定. e時, 指定參數envp可以傳遞給子程式,允許改變子程式運行環境. 無尾碼 e時,子程式使用本程式的環境. int system(char *command) 將MSDOS命令command傳遞給DOS執行轉換子程式,函數庫為math.h、stdlib.h、ctype.h、float.h char *ecvt(double value,int ndigit,int *decpt,int *sign) 將浮點數value轉換成字符串並返回該字符串 char *fcvt(double value,int ndigit,int *decpt,int *sign) 將浮點數value轉換成字符串並返回該字符串 char *gcvt(double value,int ndigit,char *buf) 將數value轉換成字符串並存於buf中,並返回buf的指針 char *ultoa(unsigned long value,char *string,int radix) 將無符號整型數value轉換成字符串並返回該字符串,radix為轉換時所用基數 char *ltoa(long value,char *string,int radix) 將長整型數value轉換成字符串並返回該字符串,radix為轉換時所用基數 char *itoa(int value,char *string,int radix) 將整數value轉換成字符串存入string,radix為轉換時所用基數 double atof(char *nptr) 將字符串nptr轉換成雙精度數,並返回這個數,錯誤返回0 int atoi(char *nptr) 將字符串nptr轉換成整型數, 並返回這個數,錯誤返回0 long atol(char *nptr) 將字符串nptr轉換成長整型數,並返回這個數,錯誤返回0 double strtod(char *str,char **endptr) 將字符串str轉換成雙精度數,並返回這個數, long strtol(char *str,char **endptr,int base) 將字符串str轉換成長整型數, 並返回這個數, int toascii(int c) 返回c相應的ASCII int tolower(int ch) 若ch是大寫字母('A'-'Z')返回相應的小寫字母('a'- 'z') int _tolower(int ch) 返回ch相應的小寫字母('a'-'z') int toupper(int ch) 若ch是小寫字母('a'-'z')返回相應的大寫字母('A'- 'Z') int _toupper(int ch) 返回ch相應的大寫字母('A'-'Z') 診斷函數,所在函數庫為assert.h、math.h void assert(int test) 一個擴展成if語句那樣的宏,如果test測試失敗,就顯示一個資訊並異常終止程式,無返回值 void perror(char *string) 本函數將顯示最近一次的錯誤資訊,格式如:字符串string:錯誤資訊 char *strerror(char *str) 本函數返回最近一次的錯誤資訊,格式如: 字符串str:錯誤資訊 int matherr(struct exception *e) 用戶修改數學錯誤返回資訊函數(沒有必要使用) double _matherr(_mexcep why,char *fun,double *arg1p, double *arg2p,double retval) 用戶修改數學錯誤返回資訊函數(沒有必要使用) 輸入輸出子程式, 函數庫為io.h、conio.h、stat.h、dos.h、stdio.h、signal.h int kbhit() 本函數返回最近所敲的按鍵 int fgetchar() 從控制台(鍵盤)讀一個字符,顯示在螢幕上 int getch() 從控制台(鍵盤)讀一個字符,不顯示在螢幕上 int putch() 向控制台(鍵盤)寫一個字符 int getchar() 從控制台(鍵盤)讀一個字符,顯示在螢幕上 int putchar() 向控制台(鍵盤)寫一個字符 int getche() 從控制台(鍵盤)讀一個字符,顯示在螢幕上 int ungetch(int c) 把字符c退回給控制台(鍵盤) char *cgets(char *string) 從控制台(鍵盤)讀入字符串存於string中 int scanf(char *format[,argument…]) 從控制台讀入一個字符串,分別對各個參數進行賦值,使用BIOS進行輸齣 int vscanf(char *format,Valist param) 從控制台讀入一個字符串,分別對各個參數進行賦值,使用BIOS進行輸齣,參數從Valist param中取得 int cscanf(char *format[,argument…]) 從控制台讀入一個字符串,分別對各個參數進行賦值,直接對控制台作操作,比如顯示器在顯示時字符時即為直接寫頻方式顯示 int sscanf(char *string,char *format[,argument,…]) 透過字符串string, 分別對各個參數進行賦值 int vsscanf(char *string,char *format,Vlist param) 透過字符串string,分別對各個參數進行賦值,參數從Vlist param中取得 int puts(char *string) 發關一個字符串string給控制台(顯示器), 使用BIOS進行輸齣 void cputs(char *string) 發送一個字符串string給控制台(顯示器), 直接對控制台作操作,比如顯示器即為直接寫頻方式顯示 int printf(char *format[,argument,…]) 發送格式化字符串輸齣給控制台(顯示器),使用BIOS進行輸齣 int vprintf(char *format,Valist param) 發送格式化字符串輸齣給控制台(顯示器),使用BIOS進行輸齣,參數從Valist param中取得 int cprintf(char *format[,argument,…]) 發送格式化字符串輸齣給控制台(顯示器), 直接對控制台作操作,比如顯示器即為直接寫頻方式顯示 int vcprintf(char *format,Valist param) 發送格式化字符串輸齣給控制台(顯示器), 直接對控制台作操作,比如顯示器即為直接寫頻方式顯示, 參數從Valist param中取得 int sprintf(char *string,char *format[,argument,…]) 將字符串string的內容重新寫為格式化後的字符串 int vsprintf(char *string,char *format,Valist param) 將字符串string的內容重新寫為格式化後的字符串,參數從Valist param中取得 int rename(char *oldname,char *newname)將文件oldname的名稱改為newname int ioctl(int handle,int cmd[,int *argdx,int argcx]) 本函數是用來控制輸入/輸齣設備的,請見下表: ─── ────────────────────────────┐ cmd值 功能 ├─── ──────────────────────────── 0 取齣設備資訊 1 設置設備資訊 2 把argcx字節讀入由argdx所指的地址 3 在argdx所指的地址寫argcx字節 4 除把handle當作設備號(0=當前,1=A,等)之外,均和cmd=2時一樣 5 除把handle當作設備號(0=當前,1=A,等)之外,均和cmd=3時一樣 6 取輸入狀態 7 取輸齣狀態 8 測試可換性;隻對於DOS 3.x 11 置分享衝突的重算計數;隻對DOS 3.x └─── ────────────────────────────┘ int (*ssignal(int sig,int(*action)())() 執行軟體信號(沒必要使用) int gsignal(int sig) 執行軟體信號(沒必要使用) int _open(char *pathname,int access)為讀或寫打開一個文件, 按後按access來確定是讀文件還是寫文件,access值見下表 ────── ────────────────────┐ access值 意義 ├────── ──────────────────── O_RDONLY 讀文件 O_WRONLY 寫文件 O_RDWR 即讀也寫 O_NOINHERIT 若文件沒有傳遞給子程式,則被包含 O_DENYALL 隻允許當前處理必須存取的文件 O_DENYWRITE 隻允許從任何其他打開的文件讀 O_DENYREAD 隻允許從任何其他打開的文件寫 O_DENYNONE 允許其他共用打開的文件 └────── ────────────────────┘ int open(char *pathname,int access[,int permiss])為讀或寫打開一個文件, 按後按access來確定是讀文件還是寫文件,access值見下表 ──── ────────────────────┐ access值 意義 ├──── ──────────────────── O_RDONLY 讀文件 O_WRONLY 寫文件 O_RDWR 即讀也寫 O_NDELAY 沒有使用;對UNIX系統相容 O_APPEND 即讀也寫,但每次寫總是在文件尾添加 O_CREAT 若文件存在,此標誌無用;若不存在,建新文件 O_TRUNC 若文件存在,則長度被截為0,屬性不變 O_EXCL 未用;對UNIX系統相容 O_BINARY 此標誌可顯示地給齣以二進位方式打開文件 O_TEXT 此標誌可用於顯示地給齣以文本方式打開文件 └──── ────────────────────┘ permiss為文件屬性,可為以下值: S_IWRITE允許寫 S_IREAD允許讀 S_IREAD|S_IWRITE允許讀、寫 int creat(char *filename,int permiss) 建立一個新文件filename,並設定讀寫性。 permiss為文件讀寫性,可以為以下值 S_IWRITE允許寫 S_IREAD允許讀 S_IREAD|S_IWRITE允許讀、寫 int _creat(char *filename,int attrib) 建立一個新文件filename,並設定文件屬性。 attrib為文件屬性,可以為以下值 FA_RDONLY隻讀 FA_HIDDEN隱藏 FA_SYSTEM系統 int creatnew(char *filenamt,int attrib) 建立一個新文件filename,並設定文件屬性。 attrib為文件屬性,可以為以下值 FA_RDONLY隻讀 FA_HIDDEN隱藏 FA_SYSTEM系統 int creattemp(char *filenamt,int attrib) 建立一個新文件filename,並設定文件屬性。 attrib為文件屬性,可以為以下值 FA_RDONLY隻讀 FA_HIDDEN隱藏 FA_SYSTEM系統 int read(int handle,void *buf,int nbyte) 從文件號為handle的文件中讀nbyte個字符存入buf中 int _read(int handle,void *buf,int nbyte) 從文件號為handle的文件中讀nbyte個字符存入buf中,直接調用MSDOS進行操作. int write(int handle,void *buf,int nbyte) 將buf中的nbyte個字符寫入文件號為handle的文件中 int _write(int handle,void *buf,int nbyte) 將buf中的nbyte個字符寫入文件號為handle的文件中 int dup(int handle) 複製一個文件處理指針handle,返回這個指針 int dup2(int handle,int newhandle) 複製一個文件處理指針handle到newhandle int eof(int *handle) 檢查文件是否結束,結束返回1,否則返回0 long filelength(int handle) 返回文件長度,handle為文件號 int setmode(int handle,unsigned mode)本函數用來設定文件號為handle的文件的打開方式 int getftime(int handle,struct ftime *ftime) 讀取文件號為handle的文件的時間,並將文件時間存於ftime結構中,成功返回0, ftime結構如下: ─────────────────┐ struct ftime { unsigned ft_tsec:5; /*秒*/ unsigned ft_min:6; /*分*/ unsigned ft_hour:5; /*時*/ unsigned ft_day:5; /*日*/ unsigned ft_month:4;/*月*/ unsigned ft_year:1; /*年-1980*/ } └─────────────────┘ int setftime(int handle,struct ftime *ftime) 重寫文件號為handle的文件時間, 新時間在結構ftime中.成功返回0.結構ftime如下: ─────────────────┐ struct ftime { unsigned ft_tsec:5; /*秒*/ unsigned ft_min:6; /*分*/ unsigned ft_hour:5; /*時*/ unsigned ft_day:5; /*日*/ unsigned ft_month:4;/*月*/ unsigned ft_year:1; /*年-1980*/ } └─────────────────┘ long lseek(int handle,long offset,int fromwhere) 本函數將文件號為handle的文件的指針移到fromwhere後的第offset個字節處. SEEK_SET文件開關 SEEK_CUR當前位置 SEEK_END文件尾 long tell(int handle) 本函數返回文件號為handle的文件指針,以字節表示 int isatty(int handle)本函數用來取設備handle的類型 int lock(int handle,long offset,long length) 對文件共用作封鎖 int unlock(int handle,long offset,long length) 打開對文件共用的封鎖 int close(int handle) 關閉handle所表示的文件處理,handle是從_creat、creat、 creatnew、creattemp、dup、dup2、_open、open中的一個處調用獲得的文件處理 成功返回0否則返回-1,可用於UNIX系統 int _close(int handle) 關閉handle所表示的文件處理,handle是從_creat、creat、 creatnew、creattemp、dup、dup2、_open、open中的一個處調用獲得的文件處理 成功返回0否則返回-1,隻能用於MSDOS系統 FILE *fopen(char *filename,char *type) 打開一個文件filename,打開方式為type, 並返回這個文件指針,type可為以下字符串加上尾碼 ── ──── ─────── ────────┐ type 讀寫性 文本/2進制文件 建新/打開舊文件 ├── ──── ─────── ──────── r 讀 文本 打開舊的文件 w 寫 文本 建新文件 a 添加 文本 有就打開無則建新 r+ 讀/寫 不限制 打開 w+ 讀/寫 不限制 建新文件 a+ 讀/添加 不限制 有就打開無則建新 └── ──── ─────── ────────┘ 可加的尾碼為t、b。加b表示文件以二進位形式進行操作,t沒必要使用 例: ──────────────────┐ #include<stdio.h> main() { FILE *fp; fp=fopen("C:\\WPS\\WPS.EXE","r+b"); └──────────────────┘ FILE *fdopen(int ahndle,char *type) FILE *freopen(char *filename,char *type,FILE *stream) int getc(FILE *stream) 從流stream中讀一個字符,並返回這個字符 int putc(int ch,FILE *stream) 向流stream寫入一個字符ch int getw(FILE *stream) 從流stream讀入一個整數,錯誤返回EOF int putw(int w,FILE *stream) 向流stream寫入一個整數 int ungetc(char c,FILE *stream) 把字符c退回給流stream,下一次讀進的字符將是c int fgetc(FILE *stream) 從流stream處讀一個字符,並返回這個字符 int fputc(int ch,FILE *stream) 將字符ch寫入流stream中 char *fgets(char *string,int n,FILE *stream) 從流stream中讀n個字符存入string中 int fputs(char *string,FILE *stream)將字符串string寫入流stream中 int fread(void *ptr,int size,int nitems,FILE *stream) 從流stream中讀入nitems個長度為size的字符串存入ptr中 int fwrite(void *ptr,int size,int nitems,FILE *stream) 向流stream中寫入nitems個長度為size的字符串,字符串在ptr中 int fscanf(FILE *stream,char *format[,argument,…]) 以格式化形式從流stream中讀入一個字符串 int vfscanf(FILE *stream,char *format,Valist param) 以格式化形式從流stream中讀入一個字符串,參數從Valist param中取得 int fprintf(FILE *stream,char *format[,argument,…]) 以格式化形式將一個字符串寫給指定的流stream int vfprintf(FILE *stream,char *format,Valist param) 以格式化形式將一個字符串寫給指定的流stream,參數從Valist param中取得 int fseek(FILE *stream,long offset,int fromwhere) 函數把文件指針移到fromwhere所指位置的向後offset個字節處,fromwhere可以為以下值: SEEK_SET 文件開關 SEEK_CUR 當前位置 SEEK_END 文件尾 long ftell(FILE *stream) 函數返回定位在stream中的當前文件指針位置,以字節表示 int rewind(FILE *stream) 將當前文件指針stream移到文件開頭 int feof(FILE *stream) 檢測流stream上的文件指針是否在結束位置 int fileno(FILE *stream) 取流stream上的文件處理,並返回文件處理 int ferror(FILE *stream) 檢測流stream上是否有讀寫錯誤,如有錯誤就返回1 void clearerr(FILE *stream) 清除流stream上的讀寫錯誤 void setbuf(FILE *stream,char *buf) 給流stream指定一個緩衝區buf void setvbuf(FILE *stream,char *buf,int type,unsigned size) 給流stream指定一個緩衝區buf,大小為size,類型為type,type的值見下表 ─── ───────────────────────────────┐ type值 意義 ├─── ─────────────────────────────── _IOFBF 文件是完全緩衝區,當緩衝區是空時,下一個輸入操作將企圖填滿整個緩 衝區.在輸齣時,在把任何數據寫到文件之前,將完全填充緩衝區. _IOLBF 文件是行緩衝區.當緩衝區為空時,下一個輸入操作將仍然企圖填整個緩 衝區.然而在輸齣時,每當新行符寫到文件,緩衝區就被清洗掉. _IONBF 文件是無緩衝的.buf和size參數是被忽略的.每個輸入操作將直接從文 件讀,每個輸齣操作將立即把數據寫到文件中. └─── ───────────────────────────────┘ int fclose(FILE *stream) 關閉一個流,可以是文件或設備(例如LPT1) int fcloseall() 關閉所有除stdin或stdout外的流 int fflush(FILE *stream) 關閉一個流,並對緩衝區作處理處理即對讀的流,將流內內容讀入緩衝區;對寫的流,將緩衝區內內容寫入流。成功返回0 int fflushall() 關閉所有流,並對流各自的緩衝區作處理處理即對讀的流,將流內內容讀入緩衝區;對寫的流,將緩衝區內內容寫入流。成功返回0 int access(char *filename,int amode) 本函數檢查文件filename並返回文件的屬性, 函數將屬性存於amode中,amode由以下位的組合構成 06可以讀、寫 04可以讀 02可以寫 01執行(忽略的) 00文件存在 如果filename是一個目錄,函數將隻確定目錄是否存在函數執行成功返回0,否則返回-1 int chmod(char *filename,int permiss) 本函數用於設定文件filename的屬性 permiss可以為以下值 S_IWRITE允許寫 S_IREAD允許讀 S_IREAD|S_IWRITE允許讀、寫 int _chmod(char *filename,int func[,int attrib]); 本函數用於讀取或設定文件filename的屬性, 當func=0時,函數返回文件的屬性;當func=1時,函數設定文件的屬性 若為設定文件屬性,attrib可以為下列常數之一 FA_RDONLY隻讀 FA_HIDDEN隱藏 FA_SYSTEM系統 介面子程式,所在函數庫為os.h、bios.h unsigned sleep(unsigned seconds) 暫停seconds微秒(百分之一秒) int unlink(char *filename) 刪除文件filename unsigned FP_OFF(void far *farptr) 本函數用來取遠指針farptr的偏移量 unsigned FP_SEG(void far *farptr) 本函數用來沒置遠指針farptr的段值 void far *MK_FP(unsigned seg,unsigned off)根據段seg和偏移量off構造一個far指針 unsigned getpsp() 取程式段前綴的段地址,並返回這個地址 char *parsfnm(char *cmdline,struct fcb *fcbptr,int option) 函數分析一個字符串,通常,對一個文件名來說,是由cmdline所指的一個命令行. 文件名是放入一個FCB中作為一個驅動器,文件名和擴展名.FCB是由fcbptr所指定的. option參數是DOS分析系統調用時,AL文本的值. int absread(int drive,int nsects,int sectno,void *buffer) 本函數功能為讀特定的磁片磁區, drive為驅動器號(0=A,1=B等),nsects為要讀的磁區數,sectno為開始的邏輯磁區號,buffer為保存所讀數據的保存空間 int abswrite(int drive,int nsects,int sectno,void *buffer) 本函數功能為寫特定的磁片磁區, drive為驅動器號(0=A,1=B等),nsects為要寫的磁區數,sectno為開始的邏輯磁區號,buffer為保存所寫數據的所在空間 void getdfree(int drive,struct dfree *dfreep) 本函數用來取磁片的自由空間, drive為磁片號(0=當前,1=A等).函數將磁片特性的由dfreep指向的dfree結構中. dfree結構如下: ───────────────────┐ struct dfree { unsigned df_avail; /*有用簇個數*/ unsigned df_total; /*總共簇個數*/ unsigned df_bsec; /*每個磁區字節數*/ unsigned df_sclus; /*每個簇磁區數*/ } └───────────────────┘ char far *getdta() 取磁片轉換地址DTA void setdta(char far *dta) 設置磁片轉換地址DTA void getfat(int drive,fatinfo *fatblkp) 本函數返回指定驅動器drive(0=當前,1=A,2=B等)的文件分配表資訊並存入結構fatblkp中,結構如下: ──────────────────┐ struct fatinfo { char fi_sclus; /*每個簇磁區數*/ char fi_fatid; /*文件分配表字節數*/ int fi_nclus; /*簇的數目*/ int fi_bysec; /*每個磁區字節數*/ } └──────────────────┘ void getfatd(struct fatinfo *fatblkp) 本函數返回當前驅動器的文件分配表資訊, 並存入結構fatblkp中,結構如下: ──────────────────┐ struct fatinfo { char fi_sclus; /*每個簇磁區數*/ char fi_fatid; /*文件分配表字節數*/ int fi_nclus; /*簇的數目*/ int fi_bysec; /*每個磁區字節數*/ } └──────────────────┘ int bdos(int dosfun,unsigned dosdx,unsigned dosal) 本函數對MSDOS系統進行調用, dosdx為寄存器dx的值,dosal為寄存器al的值,dosfun為功能號 int bdosptr(int dosfun,void *argument,unsiigned dosal) 本函數對MSDOS系統進行調用, argument為寄存器dx的值,dosal為寄存器al的值,dosfun為功能號 int int86(int intr_num,union REGS *inregs,union REGS *outregs) 執行intr_num號中斷,用戶定義的寄存器值存於結構inregs中, 執行完後將返回的寄存器值存於結構outregs中. int int86x(int intr_num,union REGS *inregs,union REGS *outregs, struct SREGS *segregs) 執行intr_num號中斷,用戶定義的寄存器值存於結構inregs中和結構segregs中,執行完後將返回的寄存器值存於結構outregs中. int intdos(union REGS *inregs,union REGS *outregs) 本函數執行DOS中斷0x21來調用一個指定的DOS函數,用戶定義的寄存器值存於結構inregs中,執行完後函數將返回的寄存器值存於結構outregs中 int intdosx(union REGS *inregs,union REGS *outregs,struct SREGS *segregs) 本函數執行DOS中斷0x21來調用一個指定的DOS函數,用戶定義的寄存器值存於結構inregs和segregs中,執行完後函數將返回的寄存器值存於結構outregs中 void intr(int intr_num,struct REGPACK *preg) 本函數中一個備用的8086軟體中斷介面它能產生一個由參數intr_num指定的8086軟體中斷. 函數在執行軟體中斷前, 從結構preg複製用戶定義的各寄存器值到各個寄存器.軟體中斷完成後, 函數將當前各個寄存器的值複製到結構preg中.參數如下: intr_num 被執行的中斷號,preg為保存用戶定義的寄存器值的結構,結構如下 ──────────────────────┐ struct REGPACK { unsigned r_ax,r_bx,r_cx,r_dx; unsigned r_bp,r_si,r_di,r_ds,r_es,r_flags; } └──────────────────────┘ 函數執行完後,將新的寄存器值存於結構preg中 void keep(int status,int size) 以status狀態返回MSDOS,但程式仍保留於記憶體中,所佔用空間由size決定. void ctrlbrk(int (*fptr)()) 設置中斷後的對中斷的處理程式. void disable() 禁止發生中斷 void enable() 允許發生中斷 void geninterrupt(int intr_num) 執行由intr_num所指定的軟體中斷 void interrupt(* getvect(int intr_num))() 返回中斷號為intr_num的中斷處理程式, 例如: old_int_10h=getvect(0x10); void setvect(int intr_num,void interrupt(* isr)()) 設置中斷號為intr_num的中斷處理程式為isr,例如: setvect(0x10,new_int_10h); void harderr(int (*fptr)()) 定義一個硬體錯誤處理程式, 每當齣現錯誤時就調用fptr所指的程式 void hardresume(int rescode) 硬體錯誤處理函數 void hardretn(int errcode) 硬體錯誤處理函數 int inport(int prot) 從指定的輸入端口讀入一個字,並返回這個字 int inportb(int port) 從指定的輸入端口讀入一個字節,並返回這個字節 void outport(int port,int word) 將字word寫入指定的輸齣端口port void outportb(int port,char byte) 將字節byte寫入指定的輸齣端口port int peek(int segment,unsigned offset) 函數返回segmentffset處的一個字 char peekb(int segment,unsigned offset) 函數返回segmentffset處的一個字節 void poke(int segment,int offset,char value) 將字value寫到segmentffset處 void pokeb(int segment,int offset,int value) 將字節value寫到segmentffset處 int randbrd(struct fcb *fcbptr,int reccnt) 函數利用打開fcbptr所指的FCB讀reccnt個記錄. int randbwr(struct fcb *fcbptr,int reccnt) 函數將fcbptr所指的FCB中的reccnt個記錄寫到磁片上 void segread(struct SREGS *segtbl)函數把段寄存器的當前值放進結構segtbl中 int getverify() 取檢驗標誌的當前狀態(0=檢驗關閉,1=檢驗打開) void setverify(int value) 設置當前檢驗狀態, value為0表示關閉檢驗,為1表示打開檢驗 int getcbrk()本函數返回控制中斷檢測的當前設置 int setcbrk(int value)本函數用來設置控制中斷檢測為接通或斷開當value=0時,為斷開檢測.當value=1時,為接開檢測 int dosexterr(struct DOSERR *eblkp) 取擴展錯誤.在DOS齣現錯誤後,此函數將擴充的錯誤資訊填入eblkp所指的DOSERR結構中.該結構定義如下: ──────────────┐ struct DOSERR { int exterror;/*擴展錯誤*/ char class; /*錯誤類型*/ char action; /*方式*/ char locus; /*錯誤場所*/ } └──────────────┘ int bioscom(int cmd,char type,int port) 本函數負責對數據的通訊工作, cmd可以為以下值: 0 置通訊參數為字節byte值 1 發送字符透過通訊線輸齣 2 從通訊線接受字符 3 返回通訊的當前狀態 port為通訊端口,port=0時通訊端口為COM1,port=1時通訊端口為COM2,以此類推 byte為傳送或接收數據時的參數,為以下位的組合: ─── ───── ─── ───── ─── ─────┐ byte值 意義 byte值 意義 byte值 意義 ├─── ───── ─── ───── ─── ───── 0x02 7數據位 0x03 8數據位 0x00 1停止位 0x04 2停止位 0x00 無奇偶性 0x08 奇數奇偶性 0x18 偶數奇偶性 0x00 110波特 0x20 150波特 0x40 300波特 0x60 600波特 0x80 1200波特 0xA0 2400波特 0xC0 4800波特 0xE0 9600波特 └─── ───── ─── ───── ─── ─────┘ 例如:0xE0|0x08|0x00|0x03即表示置通訊口為9600波特,奇數奇偶性,1停止位, 8數據位. 函數返回值為一個16位整數,定義如下: 第15位 超時 第14位 傳送移位寄存器空 第13位 傳送固定寄存器空 第12位 中斷檢測 第11位 幀錯誤 第10位 奇偶錯誤 第 9位 過載運行錯誤 第 8位 數據就緒 第 7位 接收線信號檢測 第 6位 環形指示器 第 5位 數據設置就緒 第 4位 清除發送 第 3位 接收線信號檢測器 第 2位 下降邊環形檢測器 第 1位 數據設置就緒 第 0位 清除發送 int biosdisk(int cmd,int drive,int head,int track, int sector,int nsects,void *buffer) 本函數用來對驅動器作一定的操作,cmd為功能號, drive為驅動器號(0=A,1=B,0x80=C,0x81=D,0x82=E等).cmd可為以下值: 0 重置軟磁片系統.這強迫驅動器控制器來執行硬復位.忽略所有其他參數. 1 返回最後的硬盤操作狀態.忽略所有其他參數 2 讀一個或多個磁片磁區到記憶體.讀開始的磁區由head、track、sector給齣。磁區號由nsects給齣。把每個磁區512個字節的數據讀入buffer 3 從記憶體讀數據寫到一個或多個磁區。寫開始的磁區由head、track、sector給齣。磁區號由nsects給齣。所寫數據在buffer中,每磁區512個字節。 4 檢驗一個或多個磁區。開始磁區由head、track、sector給齣。磁區號由nsects給齣。 5 格式化一個磁軌,該磁軌由head和track給齣。buffer指向寫在指定track上的磁區磁頭器的一個表。以下cmd值隻允許用於XT或AT微機: 6 格式化一個磁軌,並置壞磁區標誌。 7 格式化指定磁軌上的驅動器開頭。 8 返回當前驅動器參數,驅動器資訊返回寫在buffer中(以四個字節表示)。 9 初始化一對驅動器特性。 10 執行一個長的讀,每個磁區讀512加4個額外字節 11 執行一個長的寫,每個磁區寫512加4個額外字節 12 執行一個磁片查找 13 交替磁片復位 14 讀磁區緩衝區 15 寫磁區緩衝區 16 檢查指定的驅動器是否就緒 17 復核驅動器 18 控制器RAM診斷 19 驅動器診斷 20 控制器內部診 函數返回由下列位組合成的狀態字節: 0x00 操作成功 0x01 壞的命令 0x02 地址標記找不到 0x04 記錄找不到 0x05 重置失敗 0x07 驅動參數活動失敗 0x09 企圖DMA經過64K界限 0x0B 檢查壞的磁片標記 0x10 壞的ECC在磁片上讀 0x11 ECC校正的數據錯誤(注意它不是錯誤) 0x20 控制器失效 0x40 查找失敗 0x80 響應的連接失敗 0xBB 齣現無定義錯誤 0xFF 讀齣操作失敗 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 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) 本函數將源地址(segsrcffsrc)處的numbytes個字節複製到目標地址(segdestffdest) 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) 比較字符串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 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所返回的時間)寫入計算機中 |