日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

C语言中的常用文件操作

發(fā)布時間:2023/12/19 编程问答 39 豆豆
生活随笔 收集整理的這篇文章主要介紹了 C语言中的常用文件操作 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

原文鏈接

常常覺得,我對很多東西都是要求會用就好,不求甚解。比如說每次一遇到文件操作,我必要查查相關(guān)的API和例子,然后依樣畫葫蘆寫下來。或許正是因為這種不求甚解的態(tài)度,讓我一直處于半桶水的狀態(tài)。看完了《C專家編程》后,覺得很多東西里面有包含了很多學問;開了博之后,常常希望寫點有用的東西,有點像記筆記了,呵呵。記筆記有一個好處,就是要求你必須對現(xiàn)有的知識進行整理,然后才能有條理地寫下來。昨天寫算法的時候又遇到文件操作的東西了,這次索性把相關(guān)的API都整理出來,當是記了一回筆記了。

?

在對文件進行操作之前,要先打開文件,使用完畢后,要關(guān)閉文件。文件操作相關(guān)的API如下:

?

C代碼? #include <stdio.h> FILE *fopen(const char *path, const char *mode); //path表示文件路徑,mode表示文件使用方式 int fclose( FILE* pf ); //成功關(guān)閉返回0,否則返回EOF,并且將錯誤記錄在系統(tǒng)全局變量errno中//從stream當前位置讀取一個字符 int getc(FILE *stream); //將c寫入stream當前位置,成功返回0,否則返回EOF int fputc(int c, FILE *stream); //從stream當前位置讀取長度為size-1的字符串并保存于s中。成功返回s,否則返回NULL char *fgets(char *s, int size, FILE *stream); //將字符串寫入stream int fputs(const char *s, FILE *stream); //讀取nmemb份數(shù)據(jù),每份大小為size,并將它們保存在ptr指向的空間。返回讀取的數(shù)據(jù)大小 size_t fread(void *ptr, size_t size, size_t nmemb, FILE *stream); //從ptr指向的空間提取數(shù)據(jù)向stream寫入nmemb份數(shù)據(jù),每份大小為size,返回寫入的數(shù)據(jù)大小 size_t fwrite(const void *ptr, size_t size, size_t nmemb,FILE *stream); //格式讀寫,與標準輸入輸出的printf和scanf一樣,只是在前面多了一個文件指針 int fprintf(FILE *stream, const char *format, ...); int fscanf(FILE *stream, const char *format, ...);

?

fopen返回一個稱為“文件指針”的FILE*,FILE是由系統(tǒng)定義的一個結(jié)構(gòu),該結(jié)構(gòu)中包含有文件名、文件狀態(tài)、文件當前狀態(tài)等相關(guān)信息。所謂打開文件,實際上是建立文件的各種有關(guān)信息,并使文件指針指向該文件,以便進行其它操作。關(guān)閉文件則斷開指針與文件之間的聯(lián)系,也就禁止再對該文件進行操作。

?

有關(guān)文件的使用方式有以下幾點說明:

?

1.?文件使用方式由r,w,a,t,b,+六個字符拼成,各字符的含義是:
?? r(read):?讀
?? w(write):?寫
?? a(append):?追加
?? t(text):?文本文件,可省略不寫
?? b(banary):?二進制文件
?? +:?讀和寫

2.?凡用“r”打開一個文件時,該文件必須已經(jīng)存在, 且只能從該文件讀出。

3.?用“w”打開的文件只能向該文件寫入。 若打開的文件不存在,則以指定的文件名建立該文件,若打開的文件已經(jīng)存在,則將該文件刪去,重建一個新文件。

4.?若要向一個已存在的文件追加新的信息,只能用“a ”方式打開文件。但此時該文件必須是存在的,否則將會出錯。

5.?在打開一個文件時,如果出錯,fopen將返回一個空指針值NULL。在程序中可以用這一信息來判別是否完成打開文件的工作,并作相應(yīng)的處理。

?

6.?把一個文本文件讀入內(nèi)存時,要將ASCII碼轉(zhuǎn)換成二進制碼, 而把文件以文本方式寫入磁盤時,也要把二進制碼轉(zhuǎn)換成ASCII碼,因此文本文件的讀寫要花費較多的轉(zhuǎn)換時間。對二進制文件的讀寫不存在這種轉(zhuǎn)換。

7.?標準輸入文件(鍵盤),標準輸出文件(顯示器?),標準出錯輸出(出錯信息)是由系統(tǒng)打開的,可直接使用。文件關(guān)閉函數(shù)fclose()文件一旦使用完畢,應(yīng)用關(guān)閉文件函數(shù)把文件關(guān)閉, 以避免文件的數(shù)據(jù)丟失等錯誤。

有關(guān)文件讀寫的一些說明:

1. 進行讀取操作時,文件必須是以讀或讀寫方式打開的,進行寫操作時,必須是以寫或追加方式打開的

2.?文件內(nèi)部有一個位置指針,用來指向文件當前的讀寫位置,在文件打開時,該指針總是指向文件的第一個字符位置。

3. 對于fgets,如果在未讀完size-1個字符前就遇到了EOF或換行符,則讀出結(jié)束

4. fread和fwrite可以用來從文件讀取結(jié)構(gòu)、寫入結(jié)構(gòu)

?

文件的其他操作包括:

?

C代碼? //將文件的位置指針指向由whence加上偏移offset的位置,whence可以是SEEK_SET(文件起始位置)、SEEK_CUR(當前位置)、SEEK_END(終止位置) int fseek(FILE *stream, long offset, int whence); //返回文件當前位置 long ftell(FILE *stream); //將位置指針指向文件頭,相當于fseek(stream, 0L, SEEK_SET) void rewind(FILE *stream); //獲取或設(shè)置文件位置指針 int fgetpos(FILE *stream, fpos_t *pos); int fsetpos(FILE *stream, fpos_t *pos);

?

總結(jié)

以上是生活随笔為你收集整理的C语言中的常用文件操作的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。