版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
本文格式為Word版,下載可任意編輯——文件操作常用函數(shù)fopen
函數(shù)簡介
函數(shù)功能:開啟一個文件
函數(shù)原型:FILE*fopen(constchar*path,constchar*mode);相關函數(shù):open,fclose,fopen_s[1],_wfopen所需庫:
返回值:文件順利開啟后,指向該流的文件指針就會被返回。假使文件開啟失敗則返回NULL,并把錯誤代碼存在errno中。
一般而言,開啟文件后會作一些文件讀取或寫入的動作,若開啟文件失敗,接下來的讀寫動作也無法順利進行,所以一般在fopen()后作錯誤判斷及處理。
參數(shù)說明:
參數(shù)path字符串包含欲開啟的文件路徑及文件名,參數(shù)mode字符串則代表著流形態(tài)。mode有以下幾種形態(tài)字符串:
r以只讀方式開啟文件,該文件必需存在。r+以可讀寫方式開啟文件,該文件必需存在。rb+讀寫開啟一個二進制文件,允許讀數(shù)據。rw+讀寫開啟一個文本文件,允許讀和寫。
w開啟只寫文件,若文件存在則文件長度清為0,即該文件內容會消失。若文件不存在則建立該文件。
w+開啟可讀寫文件,若文件存在則文件長度清為零,即該文件內容會消失。若文件不存在則建立該文件。
a以附加的方式開啟只寫文件。若文件不存在,則會建立該文件,假使文件存在,寫入的數(shù)據會被加到文件尾,即文件原先的內容會被保存。(EOF符保存)
a+以附加方式開啟可讀寫的文件。若文件不存在,則會建立該文件,假使文件存在,寫入的數(shù)據會被加到文件尾后,即文件原先的內容會被保存。(原來的EOF符不保存)
wb只寫開啟或新建一個二進制文件;只允許寫數(shù)據。
wb+讀寫開啟或建立一個二進制文件,允許讀和寫。ab+讀寫開啟一個二進制文件,允許讀或在文件末追加數(shù)據。
at+開啟一個叫string的文件,a表示append,就是說寫入處理的時候是接著原來文件已有內容寫入,不是從頭寫入覆蓋掉,t表示開啟文件的類型是文本文件,+號表示對文件既可以讀也可以寫。
上述的形態(tài)字符串都可以再加一個b字符,如rb、w+b或ab+等組合,參與b字符用來告訴函數(shù)庫以二進制模式開啟文件。假使不加b,表示默認加了t,即rt,wt,其中t表示以文本模式開啟文件。由會參考umask值。
有些C編譯系統(tǒng)可能不完全提供所有這些功能,有的C版本不用\而用\等,讀者注意所用系統(tǒng)的規(guī)定。
二進制和文本模式的區(qū)別
1.在windows系統(tǒng)中,文本模式下,文件以\代表換行。若以文本模式開啟文件,并用fputs等函數(shù)寫入換行符\時,函數(shù)會自動在\前面加上\。即實際寫入文件的是\。
2.在類Unix/Linux系統(tǒng)中文本模式下,文件以\代表換行。所以Linux系統(tǒng)中在文本模式和二進制模式下并無區(qū)別。
fopen()所建立的新文件會具有
S_IRUSR|S_IWUSR|S_IRGRP|S_IWGRP|S_IROTH|S_IWOTH(0666)權限,此文件權限也
fclose()
功能:關閉一個流。注意:使用fclose()函數(shù)就可以把緩沖區(qū)內最終剩余的數(shù)據輸出到磁盤文件中,并釋放文件指針和有關的緩沖區(qū)。
用法:intfclose(FILE*stream);
fputc
函數(shù)名稱:寫字符文件函數(shù)fputc()
函數(shù)功能:將字符ch寫到文件指針fp所指向的文件的當前寫指針的位置。函數(shù)格式:intfputc(intn,File*fp)
參數(shù)解釋:fp為文件指針,它的值是執(zhí)行fopen()開啟文件時獲得的。n為輸出的字符量。
雖然函數(shù)被定義為整形數(shù),但僅用其低八位。
返回值:在正常調用狀況下,函數(shù)返回讀取字符的ASCII碼值,出錯時,返回EOF(-1)。當正確寫入一個字符或一個字節(jié)的數(shù)據后,文件內部寫指針會自動后移一個字節(jié)的位置。EOF是在頭文件stdio.h中定義的宏。
fgetc
格式:intfgetc(FILE*stream);
意為從文件指針stream指向的文件中讀取一個字符,讀取一個字節(jié)后,光標位置后移一個字節(jié)。
這個函數(shù)的返回值,是返回所讀取的一個字節(jié)。假使讀到文件末尾或者讀取出錯時返回EOF。
Fread
size_tfread(void*buffer,size_tsize,size_tcount,FILE*stream);
功能:
從一個文件流中讀數(shù)據,讀取count個元素,每個元素size字節(jié).假使調用成功返回count.返回實際讀取size*count字節(jié).如不成功,返回實際讀取的元素個數(shù)
參數(shù):buffer
用于接收數(shù)據的內存地址,大小至少是size*count字節(jié).size
單個元素的大小,單位是字節(jié)count
元素的個數(shù),每個元素是size字節(jié).stream輸入流返回值:
實際讀取的元素數(shù).假使返回值與count(不是count*size)不一致,則可能文件結尾或發(fā)生錯誤.
從ferror和feof獲取錯誤信息或檢測是否到達文件結尾.
fwrite
size_tfwrite(constvoid*buffer,size_tsize,size_tcount,FILE*stream);注意:這個函數(shù)以二進制形式對文件進行操作,不局限于文本文件返回值:返回實際寫入的數(shù)據塊數(shù)目
(1)buffer:是一個指針,對fwrite來說,是要輸出數(shù)據的地址;(2)size:要寫入內容的單字節(jié)數(shù);
(3)count:要進行寫入size字節(jié)的數(shù)據項的個數(shù);(4)stream:目標文件指針;
(5)返回實際寫入的數(shù)據項個數(shù)count。
說明:寫入到文件的哪里?這個與文件的開啟模式有關,假使是w+,則是從filepointer指向的地址開始寫,替換掉之后的內容,文件的長度可以不變,stream的位置移動count個數(shù);假使是a+,則從文件的末尾開始添加,文件長度加大。
fseek對此函數(shù)有作用,但是fwrite[1]函數(shù)寫到用戶空間緩沖區(qū),并未同步到文件中,所以修改后要將內存與文件同步可以用fflush(FILE*fp)函數(shù)同步。
fseek
功能
重定位流(數(shù)據流/文件)上的文件內部位置指針
注意:不是定位文件指針,文件指針指向文件/流。位置指針指向文件內部的字節(jié)位置,隨著文件的讀取會移動,文件指針假使不重新賦值將不會改變指向別的文件。
用法
intfseek(FILE*stream,longoffset,intfromwhere);
描述
函數(shù)設置文件指針stream的位置。假使執(zhí)行成功,stream將指向以fromwhere(偏移起始位置:文件頭0(SEEK_SET),當前位置1(SEEK_CUR),文件尾2(SEEK_END))為基準,偏移offset(指針偏移量)個字節(jié)的位置。假使執(zhí)行失敗(譬如offset超過文件自身大小),則不改變stream指向的位置。
fseek函數(shù)和lseek函數(shù)類似,但lseek返回的是一個off_t數(shù)值,而fseek返回的是一個整型。
返回值
成功,返回0,失敗返回-1,并設置errno的值,可以用perror()函數(shù)輸出錯誤。fseekpositionthefile(文件)position(位置)pointer(指針)forthefilereferencedbystreamtothebytelocationcalculatedbyoffset.
fprintf
簡介
是C/C++中的一個格式化寫—庫函數(shù);其作用是格式化輸出到一個流/文件中;函數(shù)完整形式:intfprintf(FILE*stream,char*format,[argument])
功能
傳送格式化輸出到一個文件中,可用于打印機輸出。
用法
#include
intfprintf(FILE*stream,constchar*format,...);
fprintf()函數(shù)根據指定的format(格式)發(fā)送信息(參數(shù))到由stream(流)指定的文件.fprintf()只能和printf()一樣工作.fprintf()的返回值是輸出的字符數(shù),發(fā)生錯誤時返回一個負值.
fscanf
fscanf函數(shù)的一般形式
函數(shù)名:fscanf
功能:從一個流中執(zhí)行格式化輸入,fscanf遇到空格和換行時終止,注意空格時也終止。這與fgets有區(qū)別,fgets遇到空格不終止。
用法:intfscanf(FILE*stream,char*format,[argument...]);intfscanf(文件指針,格式字符串,輸入列表);forexample:FILE*fp;chara[10];intb;doublec;
fscanf(fp,\返回值:整型,成功讀入的參數(shù)的個數(shù)
編輯本段格式字符說明
常用基本參數(shù)對照:%d:讀入一個十進制整數(shù).
%i:讀入十進制,八進制,十六進制整數(shù),與%d類似,但是在編譯時通過數(shù)據前置來區(qū)分進制,如參與“0x〞則是十六進制,參與“0〞則為八進制。例如串“031〞使用%d時會被算作31,但是使用%i時會算作25.
%u:讀入一個無符號十進制整數(shù).
%f%F%g%G:用來輸入實數(shù),可以用小數(shù)形式或指數(shù)形式輸入.%x%X:讀入十六進制整數(shù).%o':讀入八進制整數(shù).
%s:讀入一個字符串,遇空格終止。
%c:讀入一個字符。無法讀入空值??崭窨梢员蛔x入。附加格式說明字符表修飾符說明L/l長度修飾符輸入\長\數(shù)據h長度修飾符輸入\短\數(shù)據例如說明
假使要求從標
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 會計事務所實習日記
- 會計人員培訓心得體會
- 幼兒教育的教學隨筆匯編12篇
- 關于銷售類生產實習報告4篇
- 鄉(xiāng)鎮(zhèn)雪亮工程公共視頻應用聯(lián)網項目綜合視頻監(jiān)控系統(tǒng)功能介紹
- 法律的作用(醉駕版)
- 2025年運載火箭控制系統(tǒng)仿真實時處理系統(tǒng)項目發(fā)展計劃
- 《職場溝通》電子教案 項目六 職場面試溝通
- 商鋪出租合同模板
- 杭州市房屋租賃合同
- 智能陽臺種菜項目計劃書
- 廣東省深圳市龍崗區(qū)2023-2024學年四年級上學期期末數(shù)學試卷+
- 華為公司管理層選拔機制解析
- 第三方代付工程款協(xié)議書范本
- 烈士遺屬救助申請書
- 外研版英語九年級上冊 Module1-12作文范文
- 南京市七年級上冊地理期末試卷(含答案)
- 足球課程教學計劃工作總結
- 家具成品檢驗通用標準
- 粉末涂料有限公司成品裝車作業(yè)安全風險分級管控清單
- 運輸類工作簡歷
評論
0/150
提交評論