C語言對文件的基本操作
在C語言中,對於文件的操作是利用FILE結構體進行的。
幾個常用的操作文件函數簡介
1:打開文件 FILE *fopen( const char *filename, const char *mode );
第一個參數是指向文件名字符串常量的指針類型;
第二個參數指定文件打開的模式。
文件打開模式:
r:讀取,如果文件不存在,函數調用失敗;
w:為寫入操作打開一個空文件。若文件不存在,則創建一個文件;若給定的文件已經存在,那麽它的內容將被清空;
a:為寫入操作打開文件。若文件不存在,則首先創建一個文件;若文件存在,那麽在該文件結尾添加新數據,在寫入數據之前,不會移除已有的EOF標記;
r+:打開文件用於寫入操作和讀取操作,文件必須存在;
w+:寫入和讀取,其他同w;
a+:打開文件用於讀取和添加操作,其他同a。
註:打開文件後一般會做一些文件的讀取或者寫入操作,若文件打開失敗,接下來的讀寫動作也無法順利進行,所以一般在fopen()後作錯誤判斷及處理。
[cpp] view plain copy
- #include<stdio.h>
- main()
- {
- FILE * pFile=fopen("zkd","r");
- if(pFile==NULL) return;
- fclose(pFile);
- return 0;
- }
2:文件的寫入 size_t fwrite( const void *buffer, size_t size, size_t count, FILE *stream )
第一個參數:指向將要被寫入文件的數據;
第二個參數:以字節為單位的項的大小。size_t類型,實際上就是unsigned int型;
第三個參數:將要被寫入的項的最大數目;
註:即保證寫入數據大小為第二個參數和第三個參數之積即可。
第四個參數:指向FILE類型的指針,通過fopen獲得。
3:刷新緩沖區 fflush( FILE *stream )
C語言對文件的操作使用了緩存文件系統,即系統自動為每個正在使用的文件在內存中開辟了一塊緩存區域,從內存向磁盤文件寫入的數據先送到內存中的這個緩沖區,直到緩沖區的數據裝滿以後,才把數據一起送到磁盤文件上。
FILE *pFile=fopen("zkd.txt","w"); if (pFile==NULL) return 1; fwrite("I love you!",1,strlen("I love you!"),pFile); fflush(pFile);
4:文件的關閉 fclose( FILE *stream )
關閉文件,此時也會將緩沖區內容寫入磁盤,但是和fflush相比,接下來若想對文件讀寫,則必須再次打開文件。
5:文件指針定位 int fseek( FILE *stream, long offset, int origin);
在C語言文件操作中,將有一個文件指針,該指針會隨時根據我們對文件的操作來移動位置,始終指向下一個將要寫人的位置;
第二個參數:偏移量(和文件指針的位置相比)
第三個參數:指定文件指針的起始位置,可以取三個值:
SEEK_CUR:從文件當前位置處開始;
SEEK_END:從文件結尾處開始;
SEEK_SET:從文件開始處開始。
6:文件的讀取 size_t fread( void *buffer, size_t size, size_t count, FILE *stream)
第一個參數:指向存放數據的緩沖區;
其他的同fwrite();
7:獲取文件長度方法 long ftell( FILE *stream )
函數 ftell 用於得到文件位置指針當前位置相對於文件首的偏移字節數
先利用fseek函數將文件指針移動到文件的結尾處,然後利用ftell函數就可以得到文件的長度。
fseek(pFile,0,SEEK_END);
int len=ftell(pFile);
len即為文件長度
#include "stdafx.h" #include <stdio.h> #include <string.h> #include <stdlib.h> int _tmain(int argc, _TCHAR* argv[]) { FILE *pFile=fopen("zkd.txt","r"); if (pFile==NULL) return 1; fwrite("I love you!",1,strlen("I love you!"),pFile); fflush(pFile); fseek(pFile,0,SEEK_END); int len=ftell(pFile); char *ch=(char*)malloc(len+1); // memset(ch,0,100); rewind(pFile); fread(ch,1,len,pFile); ch[len]=‘\0‘; printf("%s",ch); fclose(pFile); return 0; }
註意點:
文件的打開與關閉是配套的,有文件的打開就有文件的關閉。
在對文件進行讀寫時,需要註意文件位置指針,文件位置指針來控制文件讀寫的位置,例如是在最開始讀寫還是在最後面讀寫。例如當我們調用fgetc()讀取一個字符,文件位置指針就會自動指向下一個字節。
文件指針與文件位置指針是不同的兩個概念,文件指針指向整個文件結構,而文件位置指針指向文件讀寫的位置。
參考文章:https://blog.csdn.net/clh19901213/article/details/18269989
C語言對文件的基本操作