?? 分類函數--c.txt
字號:
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系統
接口子程序,所在函數庫為:dos.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)從指定的輸入端口讀入一個字節,并返回這個字節
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -