流
分為輸入流和輸出流
- 輸入流:調(diào)用
fprintf(),puts()等會(huì)打開 - 輸出流:調(diào)用
fscanf(),gets()等會(huì)打開
緩沖區(qū)
緩沖區(qū)是內(nèi)存的一段空間,當(dāng)程序需要從外存中讀取文件中的數(shù)據(jù)時(shí),系統(tǒng)先讀入足夠多的數(shù)據(jù)到緩沖區(qū)中,然后程序?qū)彌_區(qū)中的數(shù)據(jù)進(jìn)行處理。
根據(jù)緩沖區(qū)是否由系統(tǒng)自動(dòng)提供,分為緩沖文件系統(tǒng)和非緩沖文件系統(tǒng)
早期的UNIX操作系統(tǒng)是非緩沖模式,被稱為UNIX I/O系統(tǒng)或者非緩沖I/O系統(tǒng)
ANSI C(C89,C90)只支持緩沖文件系統(tǒng)。
標(biāo)準(zhǔn)流
c語(yǔ)言中預(yù)先定義了三種標(biāo)準(zhǔn)流 stdin,stdout,stdrr(使用很少). 這些流定義在stdio.h中,默認(rèn)連接到鍵盤和顯示器,多數(shù)系統(tǒng)也允許重定向到文件輸入輸出
- stdin: 調(diào)用
scanf(),getchar(),gets()時(shí)會(huì)打開 - stdout: 調(diào)用
printf(),putchar(),puts()時(shí)會(huì)打開
stdin流和stdout流允許用戶交互式運(yùn)行程序,通過重定向?qū)崿F(xiàn)
在cmd可以通過輸入program.exe在cmd中運(yùn)行,通過標(biāo)準(zhǔn)輸入流從鍵盤輸入數(shù)據(jù),通過標(biāo)準(zhǔn)輸出流把結(jié)果輸出到顯示器。如果使用重定向模式,則使用命令program.exe<abc.in>abc.out,操作系統(tǒng)按照非交互式方式運(yùn)行程序,標(biāo)準(zhǔn)輸入被重定向到文件my.in,標(biāo)準(zhǔn)輸出流被重定向到文件my.out
用戶自定義流
當(dāng)需要讀寫文件的時(shí)候,程序員可以使用重定向標(biāo)準(zhǔn)流到文件(如上)。還可以重新創(chuàng)建一個(gè)用戶自定義流。
操作標(biāo)準(zhǔn):
- 創(chuàng)建流(打開文件)
2.判斷操作成敗
3.讀寫
4.關(guān)閉流
打開流
1.定義流變量
流變量是文件類型指針變量
#include<stdio.h>
FILE *fp
打開失敗返回NULL
要判斷下是否打開成功
結(jié)束后要關(guān)閉流 fclose();
FILE *fopen( const char * filename, const char * mode );
int fclose( FILE *fp );
int fputc( int c, FILE *fp );
int fputs( const char *s, FILE *fp );
int fprintf(FILE *fp,const char *format, ...)
int fgetc( FILE * fp );
char *fgets( char *buf, int n, FILE *fp );//n個(gè)字符
int fscanf(FILE *fp, const char *format, ...)
mode

mode