C庫函式手冊
C庫函式手冊
分類函式,所在函式庫為ctype.h
intisalpha(int ch) 若ch是字母('A'-'Z','a'-'z')返回非0值,否則返回0
intisalnum(int ch) 若ch是字母('A'-'Z','a'-'z')或數字('0'-'9')
返回非0值,否則返回0
intisascii(int ch) 若ch是字元(ASCII碼中的0-127)返回非0值,否則返回0
intiscntrl(int ch) 若ch是作廢字元(0x7F)或普通控制字元(0x00-0x1F)
返回非0值,否則返回0
intisdigit(int ch) 若ch是數字('0'-'9')返回非0值,否則返回0
intisgraph(int ch) 若ch是可列印字元(不含空格)(0x21-0x7E)返回非0值,否則返回0
intislower(int ch) 若ch是小寫字母('a'-'z')返回非0值,否則返回0
intisprint(int ch) 若ch是可列印字元(含空格)(0x20-0x7E)返回非0值,否則返回0
intispunct(int ch) 若ch是標點字元(0x00-0x1F)返回非0值,否則返回0
intisspace(int ch) 若ch是空格(''),水平製表符('\t'),回車符('\r'),
走紙換行('\f'),垂直製表符('\v'),換行符('\n')
返回非0值,否則返回0
intisupper(int ch) 若ch是大寫字母('A'-'Z')返回非0值,否則返回0
intisxdigit(int ch) 若ch是16進位制數('0'-'9','A'-'F','a'-'f')返回非0值,
否則返回0
inttolower(int ch) 若ch是大寫字母('A'-'Z')返回相應的小寫字母('a'-'z')
inttoupper(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的值
doublefrexp(double value,int *eptr) 返回value=x*2n中x的值,n存貯在eptr中
doubleldexp(double value,int exp); 返回value*2exp的值
double log(double x) 返回logex的值
doublelog10(double x) 返回log10x的值
double pow(double x,double y) 返回xy的值
doublepow10(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為弧度
doubleatan2(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為弧度
doublehypot(double x,double y) 返回直角三角形斜邊的長度(z),
x和y為直角邊的長度,z2=x2+y2
double ceil(double x) 返回不小於x的最小整數
doublefloor(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的餘數
doublefrexp(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為轉換時所用基數
doubleatof(char *nptr) 將字串nptr轉換成雙精度數,並返回這個數,錯誤返回0
int atoi(char *nptr) 將字串nptr轉換成整型數, 並返回這個數,錯誤返回0
long atol(char *nptr) 將字串nptr轉換成長整型數,並返回這個數,錯誤返回0
doublestrtod(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)
使用者修改數學錯誤返回資訊函式(沒有必要使用)
unsignedint _clear87() 清除浮點狀態字並返回原來的浮點狀態
void _fpreset() 重新初使化浮點數學程式包
unsignedint _status87() 返回浮點狀態字
======================================================================
目錄函式,所在函式庫為dir.h、dos.h
int chdir(char *path) 使指定的目錄path(如:"C:\\WPS")變成當前的工作目錄,成
功返回0
intfindfirst(char *pathname,struct ffblk *ffblk,int attrib)查詢指定的檔案,成功
返回0
pathname為指定的目錄名和檔名,如"C:\\WPS\\TXT"
ffblk為指定的儲存檔案資訊的一個結構,定義如下:
┏━━━━━━━━━━━━━━━━━━┓
┃structffblk ┃
┃{ ┃
┃ charff_reserved[21]; /*DOS保留字*/┃
┃ charff_attrib; /*檔案屬性*/┃
┃ int ff_ftime; /*檔案時間*/┃
┃ int ff_fdate; /*檔案日期*/┃
┃ longff_fsize; /*檔案長度*/┃
┃ charff_name[13]; /*檔名*/ ┃
┃} ┃
┗━━━━━━━━━━━━━━━━━━┛
attrib為檔案屬性,由以下字元代表
┏━━━━━━━━━┳━━━━━━━━┓
┃FA_RDONLY只讀檔案┃FA_LABEL 卷標號┃
┃FA_HIDDEN隱藏檔案┃FA_DIREC 目錄 ┃
┃FA_SYSTEM系統檔案┃FA_ARCH 檔案 ┃
┗━━━━━━━━━┻━━━━━━━━┛
例:
structffblk 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) 此函式返回指定驅動器的當前工作目錄名稱
drive指定的驅動器(0=當前,1=A,2=B,3=C等)
direc儲存指定驅動器當前工作路徑的變數 成功返回0
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為轉換時所用基數
doubleatof(char *nptr) 將字串nptr轉換成雙精度數,並返回這個數,錯誤返回0
int atoi(char *nptr) 將字串nptr轉換成整型數, 並返回這個數,錯誤返回0
long atol(char *nptr) 將字串nptr轉換成長整型數,並返回這個數,錯誤返回0
doublestrtod(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進行輸出,引數從Valistparam中取得
int cscanf(char *format[,argument…])從控制檯讀入一個字串,分別對各個引數進行
賦值,直接對控制檯作操作,比如顯示器在顯示時字元時即為直接寫頻方式顯示
int sscanf(char *string,char *format[,argument,…])通過字串string,分別對各個
引數進行賦值
int vsscanf(char *string,char *format,Vlist param)通過字串string,分別對各個
引數進行賦值,引數從Vlistparam中取得
int puts(char *string) 發關一個字串string給控制檯(顯示器),
使用BIOS進行輸出
void cputs(char *string) 傳送一個字串string給控制檯(顯示器),
直接對控制檯作操作,比如顯示器即為直接寫頻方式顯示
int printf(char *format[,argument,…])傳送格式化字串輸出給控制檯(顯示器)
使用BIOS進行輸出
int vprintf(char *format,Valist param) 傳送格式化字串輸出給控制檯(顯示器)
使用BIOS進行輸出,引數從Valistparam中取得
int cprintf(char *format[,argument,…])傳送格式化字串輸出給控制檯(顯示器),
直接對控制檯作操作,比如顯示器即為直接寫頻方式顯示
int vcprintf(char *format,Valist param)傳送格式化字串輸出給控制檯(顯示器),
直接對控制檯作操作,比如顯示器即為直接寫頻方式顯示,
引數從Valistparam中取得
int sprintf(char *string,char *format[,argument,…])
將字串string的內容重新寫為格式化後的字串
int vsprintf(char *string,char *format,Valist param)
將字串string的內容重新寫為格式化後的字串,引數從Valistparam中取得
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 │測試可換性;只對於DOS3.x │
│ 11 │置分享衝突的重算計數;只對DOS3.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結構如下:
┌─────────────────┐
│structftime │
│{ │
│ unsignedft_tsec:5; /*秒*/ │
│ unsignedft_min:6; /*分*/ │
│ unsignedft_hour:5; /*時*/ │
│ unsignedft_day:5; /*日*/ │
│ unsignedft_month:4;/*月*/ │
│ unsignedft_year:1; /*年-1980*/ │
│} │
└─────────────────┘
int setftime(int handle,struct ftime *ftime) 重寫檔案號為handle的檔案時間,
新時間在結構ftime中.成功返回0.結構ftime如下:
┌─────────────────┐
│structftime │
│{ │
│ unsignedft_tsec:5; /*秒*/ │
│ unsignedft_min:6; /*分*/ │
│ unsignedft_hour:5; /*時*/ │
│ unsignedft_day:5; /*日*/ │
│ unsignedft_month:4;/*月*/ │
│ unsignedft_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中
讀入一個字串,引數從Valistparam中取得
int fprintf(FILE *stream,char *format[,argument,…]) 以格式化形式將一個字元
串寫給指定的流stream
int vfprintf(FILE *stream,char *format,Valist param) 以格式化形式將一個字元
串寫給指定的流stream,引數從Valistparam中取得
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系統
================================================================================
介面子程式,所在函式庫為:dos.h、bios.h
unsignedsleep(unsigned seconds)暫停seconds微秒(百分之一秒)
int unlink(char *filename)刪除檔案filename
unsignedFP_OFF(void far *farptr)本函式用來取遠指標farptr的偏移量
unsignedFP_SEG(void far *farptr)本函式用來沒置遠指標farptr的段值
voidfar *MK_FP(unsigned seg,unsigned off)根據段seg和偏移量off構造一個far指標
unsignedgetpsp()取程式段字首的段地址,並返回這個地址
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結構如下:
┌───────────────────┐
│structdfree │
│{ │
│ unsigneddf_avail; /*有用簇個數*/ │
│ unsigneddf_total; /*總共簇個數*/ │
│ unsigneddf_bsec; /*每個扇區位元組數*/│
│ unsigneddf_sclus; /*每個簇扇區數*/ │
│} │
└───────────────────┘
charfar *getdta() 取磁碟轉換地址DTA
void setdta(char far *dta)設定磁碟轉換地址DTA
void getfat(int drive,fatinfo *fatblkp)
本函式返回指定驅動器drive(0=當前,1=A,2=B等)的檔案分配表資訊
並存入結構fatblkp中,結構如下:
┌──────────────────┐
│structfatinfo │
│{ │
│ charfi_sclus; /*每個簇扇區數*/ │
│ charfi_fatid; /*檔案分配表位元組數*/│
│ int fi_nclus; /*簇的數目*/ │
│ int fi_bysec; /*每個扇區位元組數*/ │
│} │
└──────────────────┘
void getfatd(struct fatinfo *fatblkp) 本函式返回當前驅動器的檔案分配表資訊,
並存入結構fatblkp中,結構如下:
┌──────────────────┐
│structfatinfo │
│{ │
│ charfi_sclus; /*每個簇扇區數*/ │
│ charfi_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,
structSREGS *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為儲存使用者定義的暫存器值的結構,結構如下
┌──────────────────────┐
│structREGPACK │
│{ │
│ unsignedr_ax,r_bx,r_cx,r_dx; │
│ unsignedr_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) 函式返回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結構中.該結構定義如下:
┌──────────────┐
│structDOSERR │
│{ │
│ int exterror;/*擴充套件錯誤*/│
│ charclass; /*錯誤型別*/│
│ charaction; /*方式*/ │
│ charlocus; /*錯誤場所*/│
│} │
└──────────────┘
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,
intsector,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在磁碟上讀
0x11ECC校正的資料錯誤(注意它不是錯誤)
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
structcountry *country(int countrycmode,struct country *countryp)
本函式用來控制某一國家的相關資訊,如日期,時間,貨幣等.
若countryp=-1時,當前的國家置為countrycode值(必須為非0).否則,由countryp
所指向的country結構用下列的國家相關資訊填充:
(1)當前的國家(若countrycode為0或2)由countrycode所給定的國家.
結構country定義如下:
┌────────────────────┐
│structcountry │
│{ │
│ int co_date; /*日期格式*/ │
│ charco_curr[5]; /*貨幣符號*/ │
│ charco_thsep[2]; /*數字分隔符*/ │
│ charco_desep[2]; /*小數點*/ │
│ charco_dtsep[2]; /*日期分隔符*/ │
│ charco_tmsep[2]; /*時間分隔符*/ │
│ charco_currstyle; /*貨幣形式*/ │
│ charco_digits; /*有效數字*/ │
│ int(far *co_case)(); /*事件處理函式*/│
│ charco_dasep; /*資料分隔符*/ │
│ charco_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,
intsegdest,int offdest,
unsignednumbytes)
本函式將源地址(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)
比較字串s1與s2的大小,並返回s1-s2
char strcpy(char *dest,const char *src)
將字串src複製到dest
size_tstrcspn(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_tstrlen(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_tstrspn(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個位元組的空間
unsignedlong 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() 本函式返回遠堆中未用的儲存區的長度,以位元組為單位
voidfar *farcalloc(unsigned long units,unsigned long unitsz)
從遠堆分配units個長度為unitsz的記憶體空間,並返回所分配記憶體的指標
void *farmalloc(unsigned long size)分配size個位元組的記憶體空間,
並返回分配的記憶體指標
void farfree(void far *block)釋放先前從遠堆分配的記憶體空間,
所要釋放的遠堆記憶體的指標為block
voidfar *farrealloc(void far *block,unsigned long newsize)改變已分配的遠堆內
存的大小,block為已分配有記憶體區域的指標,newzie為新的長度,返回分配好
的記憶體指標
時間日期函式,函式庫為time.h、dos.h
在時間日期函式裡,主要用到的結構有以下幾個:
總時間日期貯存結構tm
┌──────────────────────┐
│structtm │
│{ │
│ inttm_sec; /*秒,0-59*/ │
│ inttm_min; /*分,0-59*/ │
│ inttm_hour; /*時,0-23*/ │
│ inttm_mday; /*天數,1-31*/ │
│ inttm_mon; /*月數,0-11*/ │
│ inttm_year; /*自1900的年數*/ │
│ inttm_wday; /*自星期日的天數0-6*/ │
│ inttm_yday; /*自1月1日起的天數,0-365*/ │
│ inttm_isdst; /*是否採用夏時制,採用為正數*/│
│} │
└──────────────────────┘
日期貯存結構date
┌───────────────┐
│structdate │
│{ │
│ intda_year; /*自1900的年數*/│
│ charda_day; /*天數*/ │
│ charda_mon; /*月數1=Jan*/ │
│} │
└───────────────┘
時間貯存結構time
┌────────────────┐
│structtime │
│{ │
│ unsignedchar ti_min; /*分鐘*/│
│ unsignedchar ti_hour; /*小時*/│
│ unsignedchar ti_hund; │
│ unsignedchar ti_sec; /*秒*/ │
│ │
└────────────────┘
char *ctime(long *clock)
本函式把clock所指的時間(如由函式time返回的時間)轉換成下列格式的
字串:MonNov 21 11:31:54 1983\n\0
char *asctime(struct tm *tm)
本函式把指定的tm結構類的時間轉換成下列格式的字串:
MonNov 21 11:31:54 1983\n\0
double difftime(time_t time2,time_t time1)
計算結構time2和time1之間的時間差距(以秒為單位)
structtm *gmtime(long *clock)本函式把clock所指的時間(如由函式time返回的時間)
轉換成格林威治時間,並以tm結構形式返回
structtm *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所返回的時間)
寫入計算機中.
相關文章
- C語言函式手冊:c語言庫函式大全|C語言標準函式庫|c語言常用函式查詢C語言函式
- NIST 函式手冊函式
- 函式文件或者手冊函式
- oracle函式手冊(轉)Oracle函式
- ORACLE分析函式手冊Oracle函式
- ORACLE分析函式手冊(轉)Oracle函式
- 函式-PHP手冊筆記函式PHP筆記
- ORACLE分析函式手冊二Oracle函式
- ORACLE分析函式手冊二(轉)Oracle函式
- Frida官方手冊 - 函式Hook函式Hook
- delphi函式參考手冊 (轉)函式
- fgetpos() - C庫函式函式
- C 庫函式 - strstr()函式
- PostgreSQL學習手冊(SQL語言函式)SQL函式
- Oracle分析函式參考手冊(轉)一Oracle函式
- Oracle分析函式參考手冊(轉)二Oracle函式
- 易優標籤常用函式-EyouCms手冊函式
- tmpnam() - C語言庫函式C語言函式
- tmpfile() - C語言庫函式C語言函式
- c語言函式庫(轉)C語言函式
- 腦動力PHP函式速查效率手冊pdfPHP函式
- PostgreSQL學習手冊(函式和操作符)SQL函式
- Oracle 9i 分析函式參考手冊Oracle函式
- C# 註冊並使用sqlite 自定義函式C#SQLite函式
- 在c中,怎麼註冊回撥函式函式
- 檔案檢測函式 feof, ferror,clearerr C庫函式函式Error
- C語言庫函式及示例C語言函式
- linux下的c庫函式Linux函式
- rewind (C程式中的庫函式)C程式函式
- C語言標準函式庫C語言函式
- PHP 手冊中的匿名函式關聯用法分析PHP函式
- oracle 9i分析函式參考手冊 (二)Oracle函式
- Oracle 9i 分析函式參考手冊(1)Oracle函式
- Oracle 9i 分析函式參考手冊(2)Oracle函式
- Oracle 9i 分析函式參考手冊(3)Oracle函式
- Oracle 9i 分析函式參考手冊(6)Oracle函式
- Oracle 9i 分析函式參考手冊(5)Oracle函式
- Oracle 9i 分析函式參考手冊(4)Oracle函式