您好,登錄后才能下訂單哦!
這篇“C語言怎么實現對文件進行操作”文章的知識點大部分人都不太理解,所以小編給大家總結了以下內容,內容詳細,步驟清晰,具有一定的借鑒價值,希望大家閱讀完這篇文章能有所收獲,下面我們一起來看看這篇“C語言怎么實現對文件進行操作”文章吧。
向文件里輸出或讀取數據需要使用文件指針的形式,每個文件指針可以用來打開一個文件,這個文件指針指向文件的文件信息區。
FILE * 變量名
文件使用完之后要記得關閉,不讓會占用資源,文件關閉掉之后要記得把指針置空以免出現野指針
//打開文件 FILE * fopen ( const char * filename, const char * mode ); //關閉文件 int fclose ( FILE * stream );
文件使用方式 文件使用方式 如果指定文件不存在
文件使用方式 | 文件使用方式 | 如果指定文件不存在 |
---|---|---|
“r”(只讀) | 為了輸入數據,打開一個已經存在的文本文件 | 出錯 |
“w”(只寫) | 為了輸出數據,打開一個文本文件 | 建立一個新的文件 |
“a”(追加) | 向文本文件尾添加數據 | 建立一個新的文件 |
“rb”(只讀) | 為了輸入數據,打開一個二進制文件 | 出錯 |
“wb”(只寫) | 為了輸出數據,打開一個二進制文件 | 建立一個新的文件 |
“ab”(追加) | 向一個二進制文件尾添加數據 | 出錯 |
“r+”(讀寫) | 為了讀和寫,打開一個文本文件 | 出錯 |
“w+”(讀寫) | 為了讀和寫,建議一個新的文件 | 建立一個新的文件 |
“a+”(讀寫) | 打開一個文件,在文件尾進行讀寫 | 建立一個新的文件 |
“rb+”(讀寫) | 為了讀和寫打開一個二進制文件 | 出錯 |
“wb+”(讀寫) | 為了讀和寫,新建一個新的二進制文件 | 建立一個新的文件 |
“ab+”(讀寫) | 打開一個二進制文件,在文件尾進行讀和寫 | 建立一個新的文件 |
代碼示例
#include <stdio.h> int main() { FILE *pf = fopen("test.txt",'w'); if(pf==NULL) { perror("FOPEN:"); //對文件指針進行判斷以免返回空指針; } fput("haohaoxuexi,tiantianxiangshang",pf); fclose(pf); pf=NULL; //文件關閉之后把指針置為空,以免出現野指針 }
‘ w ’ 沒有文件的情況下會新建一個文件在此程序文件夾下,可以看到文件已經生成了。
功能 | 函數名 | 適用于 |
---|---|---|
字符輸入函數 | fgetc | 所有輸入流 |
字符輸出函數 | fputc | 所有輸出流 |
文本行輸入函數 | fgets | 所有輸入流 |
文本行輸出函數 | fputs | 所有輸出流 |
格式化輸入函數 | fscanf | 所有輸入流 |
格式化輸出函數 | fprintf | 所有輸出流 |
二進制輸入 | fread | 文件 |
二進制輸出 | fwrite | 文件 |
二進制存儲在文件內是查看不到具體信息的,要想在文件內查看具體信息要選擇其他函數。
二進制形式存儲代碼示例
#define _CRT_SECURE_NO_WARNINGS #include <stdio.h> #include <string.h> #include <malloc.h> struct student { char name[20]; int age; char adress[20]; }*s1; int main() { s1 = (struct student*)malloc(sizeof(struct student)); if (s1 == NULL) { perror("malloc:"); return 0; } FILE* pf = fopen("test.txt", "wb"); if (pf == NULL) { perror("FOPEN:"); //對文件指針進行判斷以免返回空指針; return 0; } strcpy(s1->name, "陳獨秀"); s1->age = 18; strcpy(s1->adress,"東城區箭桿胡同20號"); fwrite(s1, sizeof(struct student), 1, pf); fclose(pf); pf = NULL; }
結果:
可以看到文件已經出現了部分亂碼,還能看到文字的原因是文本文件打開的時候默認以一種編碼形式打開,將本來存到文本里的二進制信息進行了解碼。
這里要注意\需要再用\轉義,否則是轉義字符的意思
先打開要拷貝的文件,再打開新建拷貝后的文件進行拷貝
如果是圖片視頻等文件,要使用二進制的方式打開、讀取和存儲,否則文件會損壞
#define _CRT_SECURE_NO_WARNINGS #include <stdio.h> #include <string.h> #include <malloc.h> int main() { FILE* pfr = fopen("C:\\Users\\22763\\Pictures\\Saved Pictures\\QQ圖片20211001085735.jpg", "rb"); //要拷貝的文件目錄 FILE* pfw = fopen("CopyPic.jpg", "wb"); char temp; if (pfw == NULL||pfr==NULL) { perror("FOPEN:"); //對文件指針進行判斷以免返回空指針; return 0; } while (fread(&temp, sizeof(char), 1, pfr)) { fwrite(&temp, sizeof(char), 1, pfw); } fclose(pfw); fclose(pfr); pfw = NULL; pfr = NULL; }
這三個函數并不常用,所有只要知道有這三個函數就行了以及他們是干什么的就可以了,用的時候再查。
fseek
int fseek(FILE stream,long offset,int origin );
根據文件指針的位置和偏移量來定位文件指針。
ftell
long ftell( FILE *stream );
返回文件指針相對于起始位置的偏移量
rewind
void rewind( FILE *stream );
讓文件指針的位置回到文件的起始位置
文件在讀或者寫的時候存在一個文件緩沖區,因為與磁盤交互,需要一定時間(盡管很短),但是為了盡可能的節省時間,系統自動地在內存中設立了文件緩沖區,等攢夠一定的數據,或者程序結束,一起讀或寫,這樣大大提高讀寫速度,避免每個字符都要進行一次讀或寫。
以上就是關于“C語言怎么實現對文件進行操作”這篇文章的內容,相信大家都有了一定的了解,希望小編分享的內容對大家有幫助,若想了解更多相關的知識內容,請關注億速云行業資訊頻道。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。