天天看點

c++常用函數所在頭檔案c++常用函數所在頭檔案一覽

c++常用函數所在頭檔案一覽

http://www.3gpencoder.com/tech/2011-07-01_c++%B3%A3%D3%C3%BA%AF%CA%FD%CB% F9%D4%DA%CD%B7%CE%C4%BC%FE%D2%BB%C0%C0.html

函數 包含 類别 功能 

_atold math.h 數學子程式 把字元串轉換為浮點數

_beginthread process.h 程序控制子程式 啟動執行一個新線程

_bios_disk bios.h 接口子程式 輸出BIOS磁盤驅動器服務

_bios_equiplist bios.h 接口子程式 檢查裝置

_bios_keybrd bios.h 接口子程式 直接使用BIOS的鍵盤接口

_bios_memsize biosd.h 存儲子程式 傳回記憶體大小

_bios_printer bios.h 接口子程式 直接調用BIOS服務進行列印機I/O

_bios_timeofday bios.h 時間和日期子程式 讀取或設定BIOS時鐘

_biosserialcom bios.h 接口子程式 進行串行I/O

_c_exit process.h 程序控制子程式 不終止程式執行如同

_exit的清除_cexit process.h 程序控制子程式 不終止程式執行如同_exit的清除

_chdrive direct.h 目錄控制子程式 設定目前驅動器

_chian_intr dos.h 接口子程式

_chmode io.h 輸入輸出子程式 改變檔案的存取權限

_clear87 float.h 數學子程式 清除浮點狀态字

_close io.h 輸入輸出子程式 關閉檔案(3。1)以下版本

_control87 float.h 數學子程式 處理浮點控制字

_creat io.h 輸入輸出子程式 建立一個新檔案或重寫一個已存在的檔案

_disable dos.h 接口子程式 屏蔽中斷

_dos_allocmem dos.h 存儲子程式

_dos_close dos.h 輸入輸出子程式 關閉一個檔案

_dos_craete dos.h 輸入輸出子程式 建立一個新檔案或重寫一個已存在的檔案

_dos_createnew dos.h 輸入輸出子程式 建立一個新檔案

_dos_findfirst dos.h 目錄控制子程式 搜尋一個磁盤目錄

_dos_findnext dos.h 目錄控制子程式 繼續

_dos_findfirst的搜尋

_dos_freemem dos.h 存儲子程式

_dos_getdate dos.h 時間和日期子程式 取得和設定系統日期

_dos_getdiskfre dos.h 目錄控制子程式 取得磁盤空閑空間

_dos_getdrive dos.h 目錄控制子程式 取得和設定目前驅動器号

_dos_getfileatt dos.h 輸入輸出子程式 取得和設定檔案屬性

_dos_getftime dos.h 輸入輸出子程式 取得和設定檔案日期和時間

_dos_gettime dos.h 時間和日期子程式 取得和設定系統時間

_dos_getvect dos.h 接口子程式 取得中斷向量

_dos_keep dos.h 接口子程式

_dos_open dos.h 輸入輸出子程式 打開一個檔案用于讀和寫

_dos_read dos.h 輸入輸出子程式 從檔案讀

_dos_setblock dos.h 存儲子程式

_dos_setdate dos.h 時間和日期子程式 設定系統日期

_dos_setdrive dos.h 目錄控制子程式 設定目前驅動器号

_dos_setfileatt dos.h 輸入輸出子程式 設定檔案屬性

_dos_setfitme dos.h 輸入輸出子程式 設定檔案時間

_dos_settime dos.h 時間和日期子程式 設定系統時間

_dos_setvect dos.h 接口子程式 設定中斷向量

_dos_write dos.h 輸入輸出子程式 寫向檔案

_enable dos.h 接口子程式 開硬體中斷

_exit process.h 程序控制子程式 終止程式

_fpresent float.h 數學子程式 重新初始化浮點數學包

_fsopen stdio.h 輸入輸出子程式

_fullpath stdlib.h 目錄控制子程式 把相對路徑名轉換為絕對路徑名

_getdcwd direct.h 目錄控制子程式 取得指定驅動器的目前目錄

_getdrive direct.h 目錄控制子程式 取得目前驅動器号

_graphfreemem graphics.h 圖形子程式 可修改的圖形記憶體釋放函數

_graphgetmem graphics.h 圖形子程式 可修改的圖形記憶體配置設定函數

_harderr dos.h 接口子程式 建立一個硬體錯誤處理程式

_hardresume dos.h 接口子程式 硬體錯誤處理函數

_hardretn dos.h 接口子程式 硬體錯誤處理函數

_heapadd alloc.h 添加一個塊到堆上

_heapmin malloc.h 釋放無用的堆區域

_heapset malloc.h 用一個常量值填充堆上的自由塊

_initEasyWin io.h 初始化Ease windows

_lrotl stdlib.h 數學子程式 将無符号長整型數向左循環移位

_lrotr stdlib.h 數學子程式 将無符号長整型數向右循環移位

_makeepath stdlib.h 目錄控制子程式 生成一個路徑

_matherrl math.h 診斷子程式 使用者可修改的數學錯誤處理程式

_matherrl math.h 數學子程式 使用者可修改的數學錯誤處理程式

_open io.h 輸入輸出子程式 打開一個檔案進行讀和寫

_OvrInitEms dos.h 初始化涵蓋管理程式用于交換EMS記憶體

_OvrInitExt dos.h 初始化涵蓋管理程式用于交換EXT記憶體

_pclose stdio.h 等待一個管道指令結束

_popen stdio.h 建立一個子指令處理程式管道

_read io.h 輸入輸出子程式 讀檔案(3。1以下版本)

_rotl stdlib.h 嵌入子程式 将一個無符号整數左循環移位

_rotl stdlib.h 數學子程式 把一個無符号整數左循環移位

_rotr stdlib.h 嵌入子程式 将一個無符号整數向左循環移位

_searchstr stdlib.h 為某檔案查找某些目錄

_setcursortype graphics.h 圖形子程式 選擇光标類型

_setcursortype conio.h 輸入輸出子程式 選擇光标類型

_setcursortype conio.h 文本視窗顯示子程選擇光标類型

_splitpath stdlib.h 目錄控制子程式 将一個全限定的路徑名分解各個成份

_status87 float.h 數學子程式 取浮點狀态

_strdate stdlib.h 轉換子程式 把目前日期轉換成字元串

_strerror string.h stdio 輸入輸出子程式 建立使用者定義的錯誤資訊

_strtime stdlib.h 轉換子程式 轉換目前日期為字元串

_strtold stdlib.h 轉換子程式

_strtold stdlib.h 數學子程式

_tolower ctype.h 轉換子程式 把字元轉換成小寫字母

_write io.h 輸入輸出子程式 寫檔案

abort process.h 程序控制子程式 異常終止一程序

abs stdlib.h compl 數學子程式 傳回整數的絕對值

absl math.h 數學子程式 計算複數的模

absread dos.h 接口子程式 讀磁盤的絕對扇區

abswrite dos.h 接口子程式 寫磁盤的絕對扇區

access io.h 輸入輸出子程式 确定檔案的存取權限

acos math.h complex 數學子程式 計算反餘弦值

acosl math.h 數學子程式 計算反餘弦值

alloca malloc.h 存儲子程式 配置設定臨時堆棧空間

allocm dos.h 存儲子程式 配置設定DOS記憶體

arc graphics.h 圖形子程式 畫園弧

arg complex.h 數學子程式 求複平面中一個複數的弧度

asctime time.h 時間和日期子程式 轉換日期和時間為對應的ASCII碼

asin math.h complex 數學子程式 反正弦函數

asinl math.h 數學子程式 反正弦函數

assert assert.h 診斷子程式 條件終止函數

atan2 math.h complex 數學子程式 計算y/x的反正切值

atan2l math.h 數學子程式 計算y/x的反正切值

atof stdlib.h 轉換子程式 将字元串轉換為浮點數

atof math.h stdlib. 數學子程式 将字元串轉換成浮點數

atoi stdlib.h 轉換子程式 将字元串轉換為整數

atoi stdlib.h 數學子程式 把字元串轉換成整型數

atol stdlib.h 轉換子程式 将字銜串轉換成長整型數

atol stdlib.h 數學子程式 擡字元串轉換為長整型

bar graphics.h 圖形子程式 畫二維條形圖

bar3d graphics.h 圖形子程式 畫一個三維條形圖

bcd bcd.h 數學子程式 把一個數轉換為相對應的BCD碼

bdos dos.h 接口子程式 DOS系統調用

bdosptr dos.h 接口子程式 DOS系統調用

bioscom bios.h 接口子程式 I/O通訊

biosdisk bios.h 接口子程式 調用BIOS磁盤驅動程式

bioseqiplist bios.h 接口子程式 檢查裝置

bioskey bios.h 接口子程式 調用BIOS的鍵盤接口

biosmemory bios.h 接口子程式 返加記憶體的大小

biosprintf bios.h 接口子程式 調用BIOS的列印I/O接口

biostime bios.h 接口子程式 讀取或設定BIOS時鐘

brk alloc.h 存儲子程式 改變資料段記憶體配置設定

cabs math.h 數學子程式 計算複數的模

calloc alloc.h stdlib 存儲子程式 配置設定記憶體

ceil math.h 數學子程式 舍入

ceill math.h 數學子程式 舍入

cgets conio.h 輸入輸出子程式 讀字元串

chdir dir.h 目錄控制子程式 改變目前目錄

chmod io.h 輸入輸出子程式 改變檔案存取權限

chsize io.h 輸入輸出子程式 修改檔案長度

circle graphics.h 圖形子程式 畫園

cleardevice graphics.h 圖形子程式 清圖形螢幕

clearerr io.h 輸入輸出子程式 複位錯誤标志

close io.h 輸入輸出子程式 關閉檔案

closedir direct.h 目錄控制子程式 關閉目錄流

closegraph graphics.h 圖形子程式 關閉圖形系統

clreol conio.h 文本視窗顯示子程清除從目前光标位置到行尾的字元

clrscr conio.h 文本視窗顯示子程清除文本視窗,并把光标放在左上角

complex complex.h 數學子程式 建立複數

conj complex.h 數學子程式 求複數的共轭複數

coreleft alloc.h stdlib 存儲子程式 返順未使用的記憶體大小

cos math.h complex 數學子程式 計算餘弦值

cosh math.h complex 數學子程式 計算雙曲餘弦值

coshl math.h 數學子程式 計算雙曲餘弦值

cosl math.h 數學子程式 計算餘弦值

country dos.h 接口子程式 讀取與特定國家有關的格式

cprintf conio.h 輸入輸出子程式 格式化并輸出資料到螢幕

cputs conio.h 輸入輸出子程式 輸出一字元串到螢幕

creat io.h 輸入輸出子程式 建立一個新檔案或重寫一個已存在的檔案

creatnew io.h 輸入輸出子程式 建立新檔案

creattemp io.h 輸入輸出子程式 建立一個檔案名唯一的檔案

cscanf conio.h 輸入輸出子程式 從控制台執行格式化輸入

ctime time.h 時間和日期子程式 把日期和時間轉化為對應的字元串

ctrlbrk dos.h 接口子程式 設定CTRL-BREAK處理程式

delay dos.h 雜類子程式 暫停

DOSdelline conio.h 文本視窗顯示子程在文本視窗中删去一行

difftime time.h 時間和日期子程式 計算二個時刻的時間差

disable dos.h 接口子程式 屏蔽中斷

div math.h 數學子程式 将二個整數相除,傳回商和餘數

dosexterr dos.h 接口子程式 擷取擴充錯誤資訊

dostounix dos.h 時間和日期子程式 把日期和時間轉換成UNIX格式

drawpoly graphics.h 圖形子程式 繪制多邊形

dup io.h 輸入輸出子程式 複制檔案句柄

dup2 io.h 輸入輸出子程式 将一個檔案句柄複制到一個已有的檔案句柄

ecvt stdlib.h 轉換子程式 把浮點數轉換成字元串

ecvt stdlib.h 數學子程式 把浮點數轉換為字元串

elipse graphics.h 圖形子程式 繪制橢園

enable dos.h 接口子程式 開硬體中斷

eof io.h 輸入輸出子程式 檢測檔案是否結束

execle process.h 程序控制子程式 裝入并運作其它程式

execlp process.h 程序控制子程式 裝入并運作其它程式

execlpe process.h 程序控制子程式 裝入并運作其它程式

exect process.h 程序控制子程式

execv process.h 程序控制子程式 裝入并運作其它程式 C、傳統 C++ #include //設定插入點#include //字元處理#include //定義錯誤碼#include //浮點數處理#include //檔案輸入/輸出#include //參數化輸入/輸出#include //資料流輸入/輸出#include //定義各種資料類型最值常量#include //定義本地化函數#include //定義數學函數#include //定義輸入/輸出函數#include //定義雜項函數及記憶體配置設定函數#include //字元串處理#include //基于數組的輸入/輸出#include //定義關于時間的函數#include //寬字元處理及輸入/輸出#include //寬字元分類//标準 C++(同上的不再注釋) #include //STL 通用算法#include //STL 位集容器#include #include #include #include #include //複數類#include #include #include #include #include //STL 雙端隊列容器#include //異常處理類#include #include //STL 定義運算函數(代替運算符)#include #include //STL 線性清單容器#include//STL 映射容器#include #include //基本輸入/輸出支援#include //輸入/輸出系統使用的前置聲明#include #include //基本輸入流#include //基本輸出流#include //STL 隊列容器#include //STL 集合容器#include //基于字元串的流#include //STL 堆棧容器#include //标準異常類#include //底層輸入/輸出支援#include //字元串類#include //STL 通用模闆類#include //STL 動态數組容器#include #include using namespace std;//C99 增加#include //複數處理#include //浮點環境#include //整數格式轉換#include //布爾環境#include //整型環境#include //通用類型數學宏C頭檔案大全 分類函數,所在函數庫為ctype.hint isalpha(int ch) 若ch是字母('A'-'Z','a'-'z')傳回非0值,否則傳回0int isalnum(int ch) 若ch是字母('A'-'Z','a'-'z')或數字('0'-'9') 傳回非0值,否則傳回0int isascii(int ch) 若ch是字元(ASCII碼中的0-127)傳回非0值,否則傳回0int iscntrl(int ch) 若ch是廢棄字元(0x7F)或普通控制字元(0x00-0x1F) 傳回非0值,否則傳回0int isdigit(int ch) 若ch是數字('0'-'9')傳回非0值,否則傳回0int isgraph(int ch) 若ch是可列印字元(不含空格)(0x21-0x7E)傳回非0值,否則傳回0int islower(int ch) 若ch是小寫字母('a'-'z')傳回非0值,否則傳回0int isprint(int ch) 若ch是可列印字元(含空格)(0x20-0x7E)傳回非0值,否則傳回0int ispunct(int ch) 若ch是标點字元(0x00-0x1F)傳回非0值,否則傳回0int isspace(int ch) 若ch是空格(' '),水準制表符('\t'),回車符('\r'), 走紙換行('\f'),垂直制表符('\v'),換行符('\n') 傳回非0值,否則傳回0int isupper(int ch) 若ch是大寫字母('A'-'Z')傳回非0值,否則傳回0int isxdigit(int ch) 若ch是16進制數('0'-'9','A'-'F','a'-'f')傳回非0值, 否則傳回0int tolower(int ch) 若ch是大寫字母('A'-'Z')傳回相應的小寫字母('a'-'z')int toupper(int ch) 若ch是小寫字母('a'-'z')傳回相應的大寫字母('A'-'Z') 數學函數,所在函數庫為math.h、stdlib.h、string.h、float.hint 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) 傳回xy的值double pow10(int p) 傳回10p的值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+y2double 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轉換成雙精度數,并傳回這個數,錯誤傳回0int atoi(char *nptr) 将字元串nptr轉換成整型數, 并傳回這個數,錯誤傳回0long atol(char *nptr) 将字元串nptr轉換成長整型數,并傳回這個數,錯誤傳回0double 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.hint chdir(char *path) 使指定的目錄path(如:"C:\\WPS")變成目前的工作目錄,成 功傳回0int findfirst(char *pathname,struct ffblk *ffblk,int attrib)查找指定的檔案,成功 傳回0 pathname為指定的目錄名和檔案名,如"C:\\WPS\\TXT" ffblk為指定的儲存檔案資訊的一個結構,定義如下: ┏━━━━━━━━━━━━━━━━━━┓ ┃struct ffblk ┃ ┃{ ┃ ┃ char ff_reserved[21]; ┃ ┃ 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的檔案,成功傳回0void 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) 此函數傳回指定驅動器的目前工作目錄名稱 drive 指定的驅動器(0=目前,1=A,2=B,3=C等) direc 儲存指定驅動器目前工作路徑的變量 成功傳回0char *getcwd(char *buf,iint n) 此函數取目前工作目錄并存入buf中,直到n個字 節長為為止.錯誤傳回NULLint getdisk() 取目前正在使用的驅動器,傳回一個整數(0=A,1=B,2=C等)int setdisk(int drive) 設定要使用的驅動器drive(0=A,1=B,2=C等), 傳回可使用驅動器總數int mkdir(char *pathname) 建立一個新的目錄pathname,成功傳回0int rmdir(char *pathname) 删除一個目錄pathname,成功傳回0char *mktemp(char *template) 構造一個目前目錄上沒有的檔案名并存于template中char *searchpath(char *pathname) 利用MSDOS找出檔案filename所在路徑, ,此函數使用DOS的PATH變量,未找到檔案傳回NULL 程序函數,所在函數庫為stdlib.h、process.hvoid 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.hchar *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轉換成雙精度數,并傳回這個數,錯誤傳回0int atoi(char *nptr) 将字元串nptr轉換成整型數, 并傳回這個數,錯誤傳回0long atol(char *nptr) 将字元串nptr轉換成長整型數,并傳回這個數,錯誤傳回0double strtod(char *str,char **endptr)将字元串str轉換成雙精度數,并傳回這個數,long strtol(char *str,char **endptr,int base)将字元串str轉換成長整型數, 并傳回這個數,int toascii(int c) 傳回c相應的ASCIIint 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.hvoid 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.hint 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的名稱改為newnameint 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到newhandleint eof(int *handle)檢查檔案是否結束,結束傳回1,否則傳回0long 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; │ │} │ └─────────────────┘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; │ │} │ └─────────────────┘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 │ │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寫入一個字元chint getw(FILE *stream) 從流stream讀入一個整數,錯誤傳回EOFint putw(int w,FILE *stream)向流stream寫入一個整數int ungetc(char c,FILE *stream) 把字元c退回給流stream,下一次讀進的字元将是cint 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,…]) 以格式化形式将一個字元 串寫給指定的流streamint 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上是否有讀寫錯誤,如有錯誤就傳回1void clearerr(FILE *stream) 清除流stream上的讀寫錯誤void setbuf(FILE *stream,char *buf) 給流stream指定一個緩沖區bufvoid 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) 關閉一個流,并對緩沖區作處理 處理即對讀的流,将流内内容讀入緩沖區; 對寫的流,将緩沖區内内容寫入流。成功傳回0int fflushall() 關閉所有流,并對流各自的緩沖區作處理 處理即對讀的流,将流内内容讀入緩沖區; 對寫的流,将緩沖區内内容寫入流。成功傳回0 int access(char *filename,int amode) 本函數檢查檔案filename并傳回檔案的屬性, 函數将屬性存于amode中,amode由以下位的組合構成 06可以讀、寫 04可以讀 02可以寫 01執行(忽略的) 00檔案存在 如果filename是一個目錄,函數将隻确定目錄是否存在 函數執行成功傳回0,否則傳回-1int 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系統 接口子程式,所在函數庫為:dos.h、bios.hunsigned sleep(unsigned seconds)暫停seconds微秒(百分之一秒)int unlink(char *filename)删除檔案filenameunsigned 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() 取磁盤轉換位址DTAvoid setdta(char far *dta)設定磁盤轉換位址DTAvoid 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寫入指定的輸出端口portvoid outportb(int port,char byte)将位元組byte寫入指定的輸出端口portint peek(int segment,unsigned offset) 函數傳回segment:offset處的一個字char peekb(int segment,unsigned offset)函數傳回segment:offset處的一個位元組void poke(int segment,int offset,char value) 将字value寫到segment:offset處void pokeb(int segment,int offset,int value) 将位元組value寫到segment:offset處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.hmem…操作存貯數組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─┬─若s1s2傳回值大于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複制到destchar 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-s2char strcpy(char *dest,const char *src) 将字元串src複制到destsize_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-s2size_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的一個字元串schar strrev(char *s) 将字元串s中的字元全部颠倒順序重新排列,并傳回排列後的字元串char strset(char *s,int ch) 将一個字元串s中的所有字元置于一個給定的字元chsize_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.hint 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) 本函數用來改變配置設定給調用程式的資料段的空間數量,新的空間結束位址為enddschar *sbrk(int incr) 本函數用來增加配置設定給調用程式的資料段的空間數量,增加incr個位元組的空間 unsigned long coreleft() 本函數傳回未用的存儲區的長度,以位元組為機關void *calloc(unsigned nelem,unsigned elsize)配置設定nelem個長度為elsize的記憶體空間 并傳回所配置設定記憶體的指針void *malloc(unsigned size)配置設定size個位元組的記憶體空間,并傳回所配置設定記憶體的指針void free(void *ptr)釋放先前所配置設定的記憶體,所要釋放的記憶體的指針為ptrvoid *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)釋放先前從遠堆配置設定的記憶體空間, 所要釋放的遠堆記憶體的指針為blockvoid far *farrealloc(void far *block,unsigned long newsize)改變已配置設定的遠堆内 存的大小,block為已配置設定有記憶體區域的指針,newzie為新的長度,傳回配置設定好 的記憶體指針 時間日期函數,函數庫為time.h、dos.h在時間日期函數裡,主要用到的結構有以下幾個:總時間日期貯存結構tm┌──────────────────────┐│struct tm ││{ ││ int tm_sec; ││ int tm_min; ││ int tm_hour; ││ int tm_mday; ││ int tm_mon; ││ int tm_year; ││ int tm_wday; ││ int tm_yday; ││ int tm_isdst; ││} │└──────────────────────┘日期貯存結構date┌───────────────┐│struct date ││{ ││ int da_year; ││ char da_day; ││ char da_mon; ││} │└───────────────┘時間貯存結構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\0char *asctime(struct tm *tm) 本函數把指定的tm結構類的時間轉換成下列格式的字元串: Mon Nov 21 11:31:54 1983\n\0double 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所傳回的時間) 寫入計算機中.增補:#include "stdafx.h":Standard Application Frame Extend