柚子快報激活碼778899分享:C語言---文件
柚子快報激活碼778899分享:C語言---文件
1、使用文件原因
? ? ? ? 如果沒有文件,我們寫的程序的數(shù)據(jù)是儲存在電腦的內(nèi)存中;
? ? ? ? 若程序退出,內(nèi)存回收,數(shù)據(jù)就會丟失,再次運行時,看不見前段程序;
? ? ? ? 想要程序持久化,我們使用文件。
2、文件的種類
? ? ? ?2.1、什么是文件
? ? ? ? ? ? 磁盤(硬盤)上的是文件。
? ? ? ?2.2、文件的分類
? ? ? ? ? ? 在程序設(shè)計中,從文件的功能分為:程序文件、數(shù)據(jù)文件。
? ? ? ?2.3、程序文件
? ? ? ? ? ? 程序文件包括源程序文件(后綴為.c),
? ? ? ? ? ? 目標文件(Windows環(huán)境后綴為.obj),
? ? ? ? ? ? 可執(zhí)行程序(windows環(huán)境后綴為.exe)。
? ? ? ?2.4、數(shù)據(jù)文件
? ? ? ? ? ? ?文件的內(nèi)容不一定是程序,而是程序運行時讀寫的數(shù)據(jù),比如程序運行需要從中讀取數(shù)據(jù)? ? ? ? ? ? ? ?的文件,或者輸出的內(nèi)容。
? ? ? ? ? ? ? 根據(jù)數(shù)據(jù)得組織結(jié)構(gòu)形式,數(shù)據(jù)文件被稱為文本文件或二進制文件。
? ? ? ? (1)文件名
? ? ? ? ? ? 一個文件要有一個唯一的文件標識,以便用戶識別和引用。
? ? ? ? ? ? 文件標識常被稱為文件名
? ? ? ? (2)二進制文件
? ? ? ? ? ? ? ?數(shù)據(jù)在內(nèi)存中以二進制的形式存儲,如果不加轉(zhuǎn)換的輸出到外存的文件中,
? ? ? ? ? ? ? ?就是二進制文件。
? ? ? ? (3)文本文件
? ? ? ? ? ? ? ?如果要求在外存上以ASCII碼的形式存儲,則需要在存儲前轉(zhuǎn)換。
? ? ? ? ? ? ? ?以ASCII字符的形式存儲的文件就是文本文件。
? ? ? ? (4)一個數(shù)據(jù)在文件中的存儲
??
#include
int main()
{
int a = 10000;
FILE* pf = ("test.txt", "wb");
fwrite(&a, 4, 1, pf);
fclose(pf);
pf = NULL;
return 0;
}
3、文件的開關(guān)
? ? ? ? ? ? ?3.1、流
? ? ? ? ? ? ? ? ? ?程序的數(shù)據(jù)需要輸出到各種外部設(shè)備,也需要從外部設(shè)備獲取數(shù)據(jù),不同的外部設(shè)備? ? ? ? ? ? ? ? ? ? ? ?的輸入輸出操作各不相同,為方便程序員對各種設(shè)備進行操作,我們抽象出流的概? ? ? ? ? ? ? ? ? ? ? ? ?念,我們可以把流想象成流淌著字符的河。
? ? ? ? ? ? ? ? ? ?C程序針對文件、畫面、鍵盤等的數(shù)據(jù)輸入輸出操作都是通過流操作的。
? ? ? ? ? ? ? ? ? ?一般情況下,我們要想向流里寫數(shù)據(jù),或者從流中讀取數(shù)據(jù),都是要打開流,然后操? ? ? ? ? ? ? ? ? ? ? ? 作。
? ? ? ? ? ? ?3.2、標準流
? ? ? ? ??
? ? ? ? ? ? 3.3、文件指針
? ? ? ? ? ? ? ? 緩存文件系統(tǒng)中,關(guān)鍵概念是 “ 文件類型指針 ” ,簡稱 “ 文件指針 ” 。
? ? ? ? ? ? ? ? ?每個被使用的文件都在內(nèi)存中開辟了一個相應(yīng)的文件信息區(qū),用來存放文件的相關(guān)信息? ? ? ? ? ? ? ? ?(文件的名字,文件的狀態(tài),當前位置等)。
? ? ? ? ? ? ? ? ?這些信息是保存在一個結(jié)構(gòu)體變量中的,該結(jié)構(gòu)體類型是由系統(tǒng)聲明的,取名FILE。
? ? ? ? ? ?VS2013編譯環(huán)境提供的stdio.h頭文件中有以下的文件類型聲明:
struct _iobuf
{
char* _ptr;
int _cnt;
char* _base;
int _flag;
int _file;
int charbuf;
int _bufsiz;
char* _tmpfname;
};
typedef struct _iobuf FILE;
? ? ? ? ?
? ? ? ? ? ? 3.4、文件的打開和關(guān)閉
? ? ? ? ? ? 文件在讀寫之前應(yīng)該先打開文件,在使用結(jié)束之后應(yīng)該關(guān)閉文件。
? ? ? ? ? ? 在編寫程序的時候,在打開文件的同時,都會返回一個FILE*的指針變量指向該文件,也相? ? ? ? ? ? ? 當于建立了指針和文件的關(guān)系。
? ? ? ? ? ? ANSI C規(guī)定使用fopen函數(shù)來打開文件,fclose來關(guān)閉文件。
? ? ? ? ? 3.5、文件打開模式
#include
#include
int main()
{
//1.打開文件
//打開文件成功的話,返回的有效指針
//若打開失敗,則返回NULL
FILE* pf = fopen("C:\\Users\\Aministrator\\Desktop\\test.txt", "w");
//
if (pf == NULL)
{
perror("fopen");
return 1;
}
//寫文件
//關(guān)閉文件
fclose(pf);
pf = NULL;
return 0;
}
4、文件的讀寫
4.1、順序讀寫
(1)順序讀寫函數(shù)
(2)對比
scanf? ?/? ?fscanf? /? sscanf
printf? ?/? ?fprinf? ?/? ?sprintf
4.2隨機讀寫
(1)fseek
根據(jù)文件指針的位置和偏移量來定位文件指針(文件內(nèi)容的光標)
函數(shù)示范:
(2)ftell
函數(shù)示范:
(3)rewind
讓文件指針的位置回到文件的起始位置
函數(shù)示范:
7、文件讀取結(jié)束的判定
柚子快報激活碼778899分享:C語言---文件
精彩鏈接
本文內(nèi)容根據(jù)網(wǎng)絡(luò)資料整理,出于傳遞更多信息之目的,不代表金鑰匙跨境贊同其觀點和立場。
轉(zhuǎn)載請注明,如有侵權(quán),聯(lián)系刪除。