檔案的開啟與關閉(檔案的操作要求引入標頭檔案stdio.h)
1,檔案型指標變數
file *fp;
fp指的是乙個指向file型別結構體的指標變數。
我們使fp指向某乙個檔案的結構體變數,從而通過該結構體變數中的檔案資訊能夠訪問該檔案。
2,file型別的陣列
file f[5];
定義了乙個結構體陣列f,它有5個元素,可以用來存放5個檔案的資訊。
一,檔案的開啟(fopen函式)的使用和引數解釋
file *fp;
fp = fopen(檔名,使用檔案的方式)
注意:(1)檔名,就是需要開啟的檔案的檔名,記得帶有路徑。
(2)使用檔案的方式(「讀」或者「寫」)。
「r」 (唯讀)位輸入開啟乙個文字檔案
「w」 (只寫)為輸出開啟乙個文字檔案
「a」 (追加)向文字檔案末尾增加資料
「rb」 (唯讀)為輸入開啟乙個二進位制檔案
「wb」 (只寫)為輸出開啟乙個二進位制檔案
「ab」 (追加)向二進位制檔案末尾增加資料
「r+」 (讀寫)為讀/寫開啟乙個文字檔案
「w+」 (讀寫)為讀/寫建立乙個新的文字檔案
「a+」 (讀寫)為讀/寫開啟乙個文字檔案
「rb+」 (讀寫)為讀/寫開啟乙個二進位制檔案
「wb+」 (讀寫)為讀/寫建立乙個新的二進位制檔案
「ab+」 (讀寫)為讀/寫開啟乙個二進位制檔案
開啟方式有以下幾點注意的:
a,凡是用「r」開啟的檔案,該檔案必須已經存在,且只能從該檔案讀出;
b,用「w」開啟檔案只能向該檔案寫入,若開啟的檔案不存在,則以指定的檔名建立檔案,若開啟的檔案已經存在,則刪除檔案,從新建立新的檔案;
c,若向乙個已經存在的檔案追加新的資訊,只能用「a」方式開啟檔案,檔案必須是存在的,否則報錯;
d,開啟乙個檔案時,如果出錯,fopen將返回乙個空指標null;程式可以用此來判斷是否開啟檔案,並作相應的處理。
e,把乙個文字檔案讀入記憶體時,要將ascii碼轉換成二進位製碼,而把檔案以文字方式寫入磁碟時,也要把二進位製碼轉換成ascii碼,因此文字檔案的讀寫要花費較多的轉換時間,對二進位制檔案的讀寫不存在這種轉換。
(3)讓哪個指標變數指向被開啟的檔案。
文字都看累了,舉個栗子吧:
#include #include #include void main()
else
}
vs 2017中執行c專案操作檔案時fopen報錯的解決
二,檔案的關閉(fclose函式)
fclose(檔案指標);
使函式指標變數不再指向該檔案,也就是檔案指標變數與檔案脫鉤,不能讀寫檔案了
返回值:
(1)關閉成功返回 0
(2)關閉失敗返回eof (-1)c語言中巨集定義的
三,檔案的讀寫
對檔案的讀寫是最常用的檔案操作,在c語言中提供了多種檔案讀寫的函式;
一次寫乙個
fputc(ch,fp);
函式原型:
int fputs(char ch,file *fp);
將字元ch的值輸出到fp所指向的檔案中去;每寫入乙個字元,檔案內部指標向後移動乙個位元組;
返回值:
成功寫入返回寫入的字元,失敗返回eof;
例題:
#include #include #include /*********
*字元的寫入*
*********/
void main()
printf("輸入你想寫進檔案裡面的字元:");
ch = getchar();
ch = getchar();
while (ch != eof)
fclose(fp);//記得關閉檔案
}
一次寫一行
fputs()
int fupts(const char *s,file *fp);
返回值:
成功返回非負值,失敗返回eof(-1);
格式化寫
fprintf()
函式原型:int fpintf(file *fp,const char *format[,argument]............);
#include void main( void )
一次讀乙個字元
ch = fgetc(fp);
是從開啟的檔案中讀取乙個字元寫入fp檔案中;
注意:必須以讀或者讀寫的方式開啟檔案
在檔案內部有有乙個位置指標,用來指向當前讀寫的字元;
在檔案開啟時,該指標總是指向檔案的第乙個位元組,因此使用fgetc函式後,指標指向了下乙個位元組,所有我們可以多次用fgetc函式來讀取多個字元;
檔案指標和檔案內部指標不是一回事
檔案指標是指向整個檔案的,必須程式中定義說明,只要不從新賦值,檔案指標的值是不變的;
檔案內部指標的位置是用來指示檔案內部的當前讀寫位置,每讀寫一次,就向後移動,由系統自動呼叫,無須定義;
#include #include #include /*********
*字元的寫入*
*********/
void main()
while (ch != eof)//eof的輸入就是ctrl+z
fclose(fp);//記得關閉檔案
}
補充一下:因為二進位制裡面是有-1的。所以不能再用eof來判斷二進位制檔案讀寫了
要使用乙個自帶的函式feof()
例如:while(!feof(fp));
feof這個函式也可以用來判斷文字檔案的讀取;
一次讀一行
fgets()
函式的原型:char *fgets(char * string,int n,file *file);
n:緩衝區長度
file:需要讀取的檔案指標
返回值:
達到檔案尾或者出錯返回null;
讀取成功返回讀取的字串,一行行讀取,讀入的位元組放入緩衝區,緩衝區以null結尾;
#include #include void main()
while (fgets(filename, 20, fp) != null)
printf("\n");
fclose(fp);
}
格式化讀
fscanf()
函式原型:int fscanf(file *fp,const char *format[,argument]............);
format:控制怎麼轉換引數,以便於對他們賦值
返回值:
輸入錯誤格式不匹配或者任意轉換前已經達到檔案尾端,返回eof(-1);
#include #include void main( )
}
c語言入門 《檔案操作》
3 關閉檔案 總結開啟檔案函式 fopen const char const char 第乙個引數 檔案路徑 1 相對路徑 2 絕對路徑 例如 1 相對路徑 和.c檔案在同一檔案目錄下,可直接寫檔名稱.檔案型別 fopen text.txt w 2 絕對路徑 fopen d studyfile te...
C語言檔案操作(入門級)
今天c語言實訓第一天剛剛接觸檔案操作,從一臉蒙蔽到基本會用僅僅只能分享給新手。套路基本一直,若想用檔案操作基本都有以下內容 file fp if fp fopen admin.txt w null feile fopen const char filename,const char mode 小括號...
mybatis入門之簡單操作
1.根據使用者id查詢使用者 測試類 public class test catch ioexception e 執行結果 2.根據使用者名稱模糊查詢使用者 實體bean public class user public void setid integer id public string get...