轉換子程序,函數庫為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系統