c語言檔案讀寫

2021-10-04 16:26:20 字數 4503 閱讀 7743

#include file * fopen(const char *filename,const char *mode);
引數:

filename:需要開啟的檔名,根據需要加上路徑

mode:開啟檔案的模式設定

返回值:

返回值:

成功:檔案指標

失敗:null(找不到檔案、沒有許可權、程式開啟檔案超出上限)

例:

file *fp = fopen("f:\\baidu\\hello.txt","w");
絕對路徑:
檔案路徑加檔案全名(含字尾)
相對路徑
..\..\檔案全名(含字尾)
mode取值範圍:

r\rb:唯讀,不建立檔案,若檔案不存在則報錯

w\wb:寫,如果檔案存在則清空檔案,檔案不存在建立檔案

r+\rb+:以可讀可寫方式開啟檔案,不建立新檔案

w+\wb+:以可讀可寫方式開啟檔案,如果檔案存在則清空檔案,不存在,建立乙個檔案

a\ab:以追加方式開啟檔案,在末尾新增內容,若檔案不存在則建立

a+\ab+:以新增檔案方式開啟檔案,開啟檔案並在末尾更改檔案,若檔案不存在,則新增乙個檔案

注意:b是二進位制模式的意思,b只在windows有效,在linux用r和rb的結果一樣

unix和linux下所有的文字檔案行都是\n結尾,而windows所有的文字檔案行都是\r\n結尾

#include int fclose(file*stream)
功能:

關閉先前fopen()開啟的檔案,此動作讓緩衝區的資料寫入檔案中,並釋放系統所提供的檔案資源
引數:

stream:檔案指標
返回值:

成功:0

失敗:-1

#include int fputc(int ch,file*stream);
功能:

將ch轉換為unsigeed char後寫入stream指定的檔案中
引數:

ch:需要寫入檔案的字元

stream:檔案指標

返回值:

成功:成功寫入檔案的字元

失敗:返回-1

例:

int i = 0;

char filename[256];

printf("請輸入乙個需要建立的檔名\n");

scanf("%s", filename);

file* file = fopen(filename, "w");

if (file == null)

return -1;

char bus[1024];

memset(bus, 0, 1024);

scanf("%s", bus);

/*gets(bus);

同: fgets(bus,1024,stdin);

同: scanf("%s", bus);

*/ while (bus[i]!='\0')

fclose(file);

}

#include int fgetc(file*stream)
功能:

從stream指定的檔案中讀取乙個字元
引數:

stream:檔案指標
返回值:

成功:返回讀取到的字元

失敗:-1

例:

char filename[256];

printf("請輸入要檢視的檔名\n");

scanf("%s", filename);

file* file = fopen(filename,"r");

if (!file)

return -1;

char ch;

while ((ch = fgetc(file)) != eof)

fclose(file);

當把資料以二進位制形式存放到檔案中時,就會有-1值的出現,因此不能採用eof作為二進位制檔案的結束標誌,為解決這乙個檔案,ansi c提供乙個feof函式,用來判斷檔案是否結束。feof函式即可用以判斷二進位制檔案又可用以判斷文字檔案。

#include int feof(file* stream)
功能:

檢測是否讀取到了檔案結尾,判斷的是最後一次「讀操作的內容」,不是當前位置內容(上乙個內容)
引數:

stream:檔案指標
返回值:

非0值:已經到檔案結尾

0:沒有到檔案結尾

char* fgets(char* s,int size,file*stream)
功能:

從steam指定的檔案內讀入字元,儲存到s所指定的記憶體空間,直到出現換行符、讀到檔案結尾或是已讀了sizeof-1個字元為止,最後會自動加上字元』\0『作為字串結束標誌
引數:

s:字串

size:指定最大讀取字串的長度(size-1)

stream:檔案指標,如果讀鍵盤輸入的字串,固定寫為stdin

返回值:

成功:成功讀取到字串

讀到檔案尾或出錯:null

例:

char filename[256];

printf("請輸入檢視的檔名");

scanf("%s", filename);

file* file = fopen(filename, "r");

char ch[5];

if(!file)

return -1;

while (!feof(file))

fclose(file);

int fputs(const char* str,file* stream)
功能:

將str所指定的字串寫入到stream指定的檔案中,字串結束符「\0"不寫入檔案
引數:

str:字串

stream:檔案指標,直接輸出固定寫為stdout

返回值:

該函式返回乙個非負值,如果發生錯誤則返回 eof
例:

char filename[256];

printf("請輸入乙個需要建立的檔名");

scanf("%s", filename);

file* file = fopen(filename, "w");

char ch[1024];

if(!file)

return -1;

while (1)

fputs(ch, file); }

fclose(file);

#includenint fprintf(file*stream,const char*format,...);
功能:

根據引數format字串來轉換並格式化資料,然後將結果輸出到stream指定的檔案中,指定出現字串結束符『\0』為止
引數:

stream:已經開啟的檔案
formar:

字串格式,用法和printf()一樣
返回值:

成功:實際寫入檔案的字元個數

失敗:返回乙個負數

#includenint fscanf(file*stream,const char*format,...);
功能:

從乙個流中執行格式化輸入,fscanf遇到空格和換行時結束,注意空格時也結束。這與[fgets](有區別,fgets遇到空格不結束。
引數:

stream:已經開啟的檔案
formar:

字串格式,用法和scanf()一樣
返回值:

成功:返回成功匹配和賦值的個數

失敗:到達檔案末尾或發生讀錯誤,返回eof

C語言檔案讀寫

include include define maxlen 1024 int main file outfile,infile outfile fopen 1.bmp wb infile fopen c 1.bmp rb unsigned char buf maxlen int rc while r...

C語言讀寫檔案

c語言庫函式包括檔案的開啟 關閉 讀 寫 定位等各種操作 要操作檔案,首先要宣告乙個檔案指標變數file fp 呼叫fopen開啟檔案 檔案指標名 fopen 檔名,使用檔案方式 ps 這裡檔案路徑必須是帶雙斜槓 其中,1.檔案使用方式 意 義 rt 唯讀開啟乙個文字檔案,只允許讀資料 wt 只寫開...

C語言檔案讀寫

讀取乙個完整的檔案 include include int main 如果檔案錯誤,退出1 獲得檔案大小 fseek pfile 0 seek end 指標移到檔案末位 lsize ftell pfile 獲得檔案長度 rewind pfile 函式rewind 把檔案指標移到由stream 流 指...