1、標準檔案
標準檔案
檔案指標
一般使用的裝置
標準輸入
stdin鍵盤
標準輸出
stdout
顯示器
標準出錯 stderr
顯示器
2、檔案操作函式
2.1 開啟檔案
-----------------------------------------
#includefile *fopen(const char *path, const char *mode);
引數說明:
第乙個引數:const char *path,要開啟的檔案的位置。填寫是乙個檔名,可以有目錄。
第二個引數:const char *mode,開啟檔案的模式。唯讀、只寫、可讀可寫("r"、"r+"、"w"、"w+"、"a"、"a+",也可組合使用)
r = read 讀 唯讀,檔案必須存在,檔案指標在檔案開頭位置 r+
可讀可寫,檔案必須存在,檔案指標在檔案開頭位置
w = write 寫
只寫,檔案不存在則會建立,檔案存在,就把檔案清空,檔案指標在檔案開頭位置 w+
可讀可寫,檔案不存在則會建立,檔案存在,就把檔案清空,檔案指標在檔案開頭位置
a+ 可讀追加,檔案不存在則會建立,檔案存在,就追加到檔案結尾,檔案指標在檔案結尾。讀還是從檔案的開頭位置讀。
2.2關閉檔案
----------------------------------------
#include
int fclose(file *fp);
2.3 讀寫檔案
---------------------------------------
傳統格式化讀入寫出,存入陣列
#include
int fprintf(file *stream, const char *format, ...);
int fscanf(file *stream, const char *format, ...);
函式的返回值:讀或寫的個數。(也可無返回值)
---------------------------------------
每次一行的i/o。使用fgets 和fputs 一次讀或寫一行。每行都以乙個新行符終止。
#include
char *fgets(char *s, int size, file *stream);
int fputs(const char *s, file *stream);
---------------------------------------
每次乙個字元的i/o。一次讀或寫乙個字元
#include
int fgetc(file *stream);
int fputc(int c, file *stream);
----------------------------------------
直接i/o。fread 和fwrite 函式支援這種型別的i/o。每次i/o 操作讀或寫某種數量的物件,而每個物件具有指定的長度。這兩個函式常用於從二進位制檔案中讀或寫乙個結構。
#include
size_t fread(void *ptr, size_t size, size_t nmemb, file *stream);
size_t fwrite(const void *ptr, size_t size, size_t nmemb,file *stream);
其中*stream是指向的檔案,ptr是陣列名或接受的位址,size表示單個元素的大小,nmenmb是元素數
3. 出錯處理函式(三種方法)
----------------------------------------
#include
void perror(const char *s);
引數說明:
const char *s,我們通常填寫乙個函式名。系統會在後邊新增出錯的資訊,並且會自動換行。
----------------------------------------
#include
char *strerror(int errnum);
extern int errno; //定義型別
strerror(errno);
----------------------------------------
printf("%m\n"); (簡單、常用)
4.判斷是否讀到了檔案結尾
----------------------------------------
#include
int feof(file *stream);
feof返回值:沒有檔案結尾返回:0;到了檔案結尾返回:1
5. 移動檔案指標
----------------------------------------
#include
long ftell(file *stream); //返回檔案的長度
void rewind(file *stream); //直接移到檔案開頭
int fseek(file *stream, long offset, int whence);
fseek函式引數說明:
file *stream;要操作的檔案。
long offset;向後移動多少位置。
int whence;移動的參考點(seek_set:檔案開頭、seek_cur:讀寫的當前位置、seek_end:檔案結尾)
C語言標準IO
這幾天參加中興捧月比賽,用到了c語言的標準io庫。由於對其中的一些細節不是非常清楚,導致了許多bug,花了好長時間來除錯。所以在此做個筆記,以備後查。1.緩衝區 全緩衝。在這種情況下,當填滿標準i o快取後才進行實際i o操作。對駐留在磁碟上的檔案的訪問通常是由標準i o庫實施全緩衝的。緩衝區可由標...
C語言標準IO
這幾天參加中興捧月比賽,用到了c語言的標準io庫。由於對其中的一些細節不是非常清楚,導致了許多bug,花了好長時間來除錯。所以在此做個筆記,以備後查。1.緩衝區 全緩衝。在這種情況下,當填滿標準i o快取後才進行實際i o操作。對駐留在磁碟上的檔案的訪問通常是由標準i o庫實施全緩衝的。緩衝區可由標...
C語言檔案IO操作(標準IO)
函式 file fopen const char path,const char mode 引數1 將要開啟的檔案路徑 引數2 開啟檔案的方式 1.r 唯讀的方式開啟 2.w 若檔案不存在則建立檔案,若存在此檔案則清空檔案內容並打卡 3.a 若檔案不存在則建立檔案,若存在則在末尾追加 不會清空原檔案...