一、寫檔案
(1)寫文字檔案
(2)寫二進位制檔案
(3)fprintf()函式
二、寫檔案綜合例項
三、讀檔案
(1)讀文字檔案
(2)讀二進位制檔案
(3)fscanf()函式
四、檔案位置指標
(1)fseek()函式
(2)rewind()函式
(3)ftell()函式
四、讀檔案綜合例項
檔案分為文字檔案和二進位制檔案,因為它們的存放形式不同,所以寫檔案的方法也不一樣。
①fputc()函式
fputc()函式用於向檔案中寫入乙個字元,其函式原型如下:
int fputc(char ch,file *fp);【注釋】
②fputs()函式
使用fputs()函式用於向檔案中寫入乙個字串(不自動寫入字串結束標記符'\0'),成功寫入乙個字元後,檔案位置指標會自動後移,函式返回值為非負整數,否則返回eof。函式原型如下:
int fputs( const char* str, file *fp);【注釋】
對二進位制檔案進行寫操作,主要使用:fwrite()函式
fwrite()函式用於以二進位制形式向檔案中寫入資料,函式原型如下:
unsigned int fwrite( const void* str, unsigned int size, unsigned int count, file* file);【注釋】
二進位制檔案讀寫在記憶體和二進位制檔案之間傳送二進位制形式的資料,文字模式下有特殊意義的字元(如'\0'等),在二進位制模式下沒有意義。
fprintf()函式用於從字串中獲取資料,寫入檔案。函式原型如下:
int fprintf( file* file,const char *format, ...);【注釋】
例項分析:
fprintf(fp," i am a %s, i am %d years old.", "student",18);//最後儲存到檔案中文字為「 i am a studnet, i am 18 years old.」
#include #pragma warning(disable:4996)
int main()
//寫入一行字串
fputs("張三",fp1);
//寫入乙個字元
fputc('\n', fp1);
//格式化寫入字串
fprintf(fp1, "i am a %s ,i am %d years old.", "student", 18);
fclose(fp1);
//對二進位制檔案進行操作
fp2 = fopen("e:\\test2.txt", "wb");
//判空操作
if (fp2 == null)
//寫入字串
char str = "i am a student ,i am 18 years old.\n";
fwrite(str,sizeof(str) , 1,fp2);
fprintf(fp2, "i am a %s ,i am %d years old.", "student", 18);
fclose(fp2);
return 0;
}
執行檔案test.txt結果:
test2.txt結果:
因為是二進位制檔案所以使用記事本開啟是亂碼
①fgetc()函式
fgetc()函式用於從檔案中讀取乙個字元,函式原型如下:
char fgetc(file *fp);//fp為被讀取的字元的檔案指標②fgets()函式fgets()函式用於每次從檔案中讀取一行字串,或讀取指定長度的字串。函式原型如下:
char* fgets( char* buf, int maxcount, file *file);【注釋】
對二進位制檔案進行讀操作時,主要用函式:fread()函式
fread()函式用於在程式中以二進位制的形式讀取檔案,其函式原型如下:
unsigned int fread(void* dstbuf,unsigned int elementsize,unsigned int count,file *file);【注釋】
fscanf()函式用於從檔案中格式化地讀出資料,其函式原型如下:
int fscanf( file *flie, const char *format...);【注釋】
為了對讀寫進行控制,系統為每個檔案設定了乙個位置指標,用於指示檔案當前讀寫的位置,該指標被稱為檔案位置指標。
當從檔案頭部開始,對檔案進行順序讀寫時,檔案位置指標會伴隨著讀寫過程逐個後移,每讀寫乙個資料,位置指標後移乙個位置。下次讀寫時,系統會從檔案位置指標指向的位置開始讀寫檔案。
檔案位置指標可以人為移動,實現檔案的隨機讀寫。常用的控制檔案位置指標的函式有三個:
fseek()函式的作用是將檔案位置指標移動到指定位置,其函式原型為:
int fseek(file *fp ,long offset,int origin);【注釋】
呼叫該函式,如果呼叫成功會返回0,有誤返回-1。
該函式一般用於二進位制檔案,因為對文字檔案進行操作時,需要進行字元轉換,對位置的計算可能會發生錯誤。
rewind()函式可以將檔案位置指標移動到檔案的開頭,函式原型如下:
void rewind( file *fp);ftell()函式用於獲取檔案位置指標當前指向的位置,其函式原型如下:
long ftell(file *fp);ftell()函式若呼叫成功,將返回檔案位置指標當前所在的位置,否則,返回-1.
#include int main()
fgets(str, 50, fp1);
printf("第一行資料:\n");
fscanf(fp1, "%s", &str);//格式化輸出字串
printf("%s\n", str);
fclose(fp1);
//對二進位制檔案進行操作
fp2 = fopen("e:\\test2.txt", "wb");
//判空操作
if (fp2 == null)
fread(str, sizeof(str), 1, fp2);
printf("二進位制檔案:\n");
printf("%s", str);
fclose(fp2);
return 0;
}
執行結果:
c語言檔案讀寫操作
檔案讀取操作 file fp char fname d printf s n fname fp fopen fname,r fscanf fp,d buf printf d buf 0 fclose fp fread,與fwrite是binary stream input output二進位製流的輸...
C語言檔案讀寫操作
標頭檔案 include include include include 用於生成隨機數 建立檔案指標 file fp 檢測檔案是否開啟成功 if fp fopen f52.txt w null 如果檔案不存在,則會新建。w 即設定操作為 write 寫操作 隨機的產生,設定時間種子 srand t...
C語言 檔案讀寫操作
一 基本概念 1 檔案流 c 語言把檔案看作是乙個字元的序列,即檔案是由乙個乙個字元組成的字元流,因此 c 語言將檔案也稱之為檔案流。即當讀寫乙個檔案時,可以不必關心檔案的格式或結構。計算機檔案的儲存,物理上都是二進位制,所以文字檔案與二進位制檔案的區別並不是物理上的,而是邏輯上的。這兩者只是在編碼...