c標(biāo)準(zhǔn)文件io函數(shù)的原型和注意點(diǎn)
fopen()
需要頭文件:#include
函數(shù)原型:FILE *fopen(const char *path,const char *mode)
函數(shù)參數(shù):path:要打開的文件的路徑及文件名
mode:文件打開方式,見下
函數(shù)返回值:成功:指向文件的FILE類型指針
失敗:NULL
以下是mode參數(shù)允許使用的取值及說明:
r或rb 以只讀的方式打開文件,該文件必須存在
r+或r+b 以可讀可寫的方式打開文件,該文件必須存在
w或wb 以只寫的方式打開文件,若文件不存在則創(chuàng)建該文件;若文件存在則擦除文件原始內(nèi)容,從文件開頭開始操作文件
w+或w+b 以可讀可寫的方式打開文件,若文件不存在則創(chuàng)建該文件;若文件存在則擦除文件原始內(nèi)容,從文件開頭開始操作文件
a或ab 以附加的方式打開只寫文件,若文件不存在則創(chuàng)建該文件;若文件存在,寫入的數(shù)據(jù)追加在文件尾,即文件的原始內(nèi)容會(huì)被保留
a+或a+b 以附加的方式打開可讀可寫文件,若文件不存在則創(chuàng)建該文件;若文件存在,寫入的數(shù)據(jù)追加在文件尾,即文件的原始內(nèi)容會(huì)被保留
}
gets()、fgets()
需要頭文件:#include
函數(shù)原型:char *gets(char *s)
char *fgets(char *s,int size,FILE *stream)
函數(shù)功能:
假設(shè)buff長度為MAX;那么使fgetc停止的方式就有兩種:
1. 當(dāng)讀到/n時(shí),就把/n的ascii寫入buff便停止,在后面補(bǔ)上一個(gè)'\0';
2. 當(dāng)讀到 size-1 個(gè)字符都沒讀到/n時(shí)那么就結(jié)束,后面補(bǔ)上一個(gè)'\0';
函數(shù)參數(shù):s:存放輸入字符的緩沖區(qū)地址
size:輸入的字符串長度
stream:輸入文件流
函數(shù)返回值:
成功:s
失敗或讀到文件尾:NULL
puts()、fputs()
需要頭文件:#include
函數(shù)原型:int puts(const char *s)
int fputs(const char *s,FILE *stream)
函數(shù)參數(shù):s:存放輸出字符的緩沖區(qū)地址
stream:輸出文件流
函數(shù)返回值:成功:非負(fù)數(shù)
失敗:EOF
scanf()、fscanf()、sscanf()
需要頭文件:#include
函數(shù)原型:int scanf(const char *format,...);
int fscnaf(FILE *fp,const char *format,...);
int sscanf(char *buf,const char *format,...);
函數(shù)參數(shù):format:輸入的格式
fp:待輸入的流
buf:待輸入的緩沖區(qū)
函數(shù)返回值:成功:讀到的數(shù)據(jù)個(gè)數(shù)
失。篍OF
printf()、fprintf()、sprintf()
需要頭文件:#include
函數(shù)原型:int printf(const char *format,...);
int fprintf(FILE *fp,const char *format,...);
int sprintf(char *buf,const char *format,...);
函數(shù)參數(shù):format:輸出的格式
fp:待輸出的流
buf:待輸出的緩沖區(qū)
函數(shù)返回值:成功:輸出的字符數(shù)
失。篍OF
fread()
需要頭文件:#include
函數(shù)原型:size_t fread(void *ptr, size_t size, size_t nmemb, FILE *stream);
函數(shù)參數(shù):ptr:存放讀入數(shù)據(jù)的緩沖區(qū)
size:讀取的每個(gè)數(shù)據(jù)項(xiàng)的大小(單位字節(jié))
nmemb:讀取的數(shù)據(jù)個(gè)數(shù)
stream:要讀取的流
函數(shù)返回值:
成功:實(shí)際讀到的nmemb數(shù)目
失。0
fwrite()
需要頭文件:#include
函數(shù)原型:size_t fwrite(void *ptr,size_t size,size_t nmemb,FILE *stream);
函數(shù)參數(shù):ptr:存放寫入數(shù)據(jù)的緩沖區(qū)
size:寫入的每個(gè)數(shù)據(jù)項(xiàng)的大小(單位字節(jié))
nmemb:寫入的數(shù)據(jù)個(gè)數(shù)
stream:要寫入的流
函數(shù)返回值: 成功:實(shí)際寫入的nmemb數(shù)目
失敗:0
feof()/ferror()可以函數(shù)判斷是因?yàn)樽x操作錯(cuò)誤哈市讀到文件尾部。
在打開流的時(shí)候,偏移位置為0(即文件開頭)
fseek()
需要頭文件:#include
函數(shù)原型:int fseek(FILE *stream,long offset,int whence);
函數(shù)參數(shù):stream:要定位的流
offset:相對(duì)于基準(zhǔn)點(diǎn)whence的偏移量
whence:基準(zhǔn)點(diǎn)(取值見下)
函數(shù)返回值:成功:0,改變讀寫位置
失。篍OF,不改變讀寫位置
其中第三個(gè)參數(shù)whence的取值如下:
SEEK_SET:代表文件起始位置,數(shù)字表示為0
SEEK_CUR:代表文件當(dāng)前的讀寫位置,數(shù)字表示為1
SEEK_END:代表文件結(jié)束位置,數(shù)字表示為2
函數(shù)ftell()
需要頭文件:#include
函數(shù)原型:int ftell(FILE *stream);
函數(shù)參數(shù):stream:要定位的流
函數(shù)返回值:成功:返回當(dāng)前的讀寫位置
失敗:EOF
編輯:admin 最后修改時(shí)間:2018-05-18