版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
主講:劉暉副教授武漢大學(xué)衛(wèi)星導(dǎo)航定位技術(shù)研究中心衛(wèi)星導(dǎo)航定位算法與程序設(shè)計(jì)單點(diǎn)定位算法的課程路線關(guān)于單點(diǎn)定位數(shù)據(jù)模型回顧單點(diǎn)定位總體設(shè)計(jì)GNSS中的協(xié)議矩陣函數(shù)編碼實(shí)現(xiàn)各個(gè)模塊時(shí)間算法坐標(biāo)算法文件I/O衛(wèi)星位置計(jì)算各項(xiàng)改正計(jì)算聯(lián)合調(diào)試提交成果第九講文件讀寫內(nèi)容文件操作概述
C/C++語言中的文件操作C#語言中的文件操作課程小結(jié)文件操作概述(1)文件可以看作是數(shù)據(jù)的集合,一般保存在磁盤或其他存儲(chǔ)介質(zhì)上文件I/O(數(shù)據(jù)的輸入/輸出)通過流(Stream)來實(shí)現(xiàn);流提供一種向后備存儲(chǔ)寫入字節(jié)和從后備存儲(chǔ)讀取字節(jié)的方式對于流有5種基本的操作:打開、讀取、寫入、改變當(dāng)前位置、關(guān)閉文件操作概述(2)
文件讀寫是各種語言的基本功能之一
文件可分為
文本文件,又稱為ASCII碼文件,每個(gè)字節(jié)存放一個(gè)字符的ASCII碼值
二進(jìn)制文件,以16進(jìn)制數(shù)來存放數(shù)據(jù)
文件操作的種類
打開,關(guān)閉
讀,寫
定位內(nèi)容文件操作概述
C/C++語言中的文件操作
文件指針
打開與關(guān)閉文件讀取文件
向文件寫入數(shù)據(jù)
文件定位示例C#語言中的文件操作文件類型指針在C語言中,用文件類型指針來標(biāo)識(shí)文件。定義文件類型指針的一般形式為
FILE*指針變量名;其中FILE是C編譯系統(tǒng)定義的一種結(jié)構(gòu)體類型,其中的成員用于存放有關(guān)文件的一些信息。指針變量名用于指向一個(gè)文件,實(shí)際上是用于存放文件緩沖區(qū)的首地址。例如,
FILE*fp;定義了一個(gè)結(jié)構(gòu)體FILE類型的指針變量fp。文件打開與關(guān)閉(1)文件的打開在C語言中,打開一個(gè)文件的一般形式如下:
FILE*fp(或其他指針變量名);
…fp=fopen(“文件名”,“文件使用方式”);為了打開一個(gè)文件,首先要為該文件定義一個(gè)文件類型指針,然后用C語言提供的fopen函數(shù)打開文件。fopen函數(shù)有兩個(gè)參數(shù):“文件名”與“文件使用方式”。它們均是字符串。文件打開與關(guān)閉(2)文件使用方式文件使用方式涵義詳細(xì)說明r只讀若文件不存在,則返回空指針NULLw只寫若指定的文件已存在,則其中原有內(nèi)容被刪去;否則創(chuàng)建一個(gè)新文件a追加向文件尾增加數(shù)據(jù)。若指定的文件不存在,則創(chuàng)建一個(gè)新文件r+讀寫指定的文件必須已存在,否則返回NULLw+讀寫若指定的文件已存在,則其中原有內(nèi)容被刪去a+讀寫
追加寫。文件打開與關(guān)閉(3)文件的關(guān)閉對文件操作完成后,要關(guān)閉文件。在C語言中,關(guān)閉文件的一般形式如下:
fclose(fp);fclose函數(shù)的主要功能是將由fp指向的緩沖區(qū)中的數(shù)據(jù)存放到外存儲(chǔ)器的文件中,然后釋放該緩沖區(qū)。讀取文件數(shù)據(jù)
文件讀函數(shù):對文件進(jìn)行讀操作,是指從外存儲(chǔ)器的文件中向程序輸入數(shù)據(jù)。在C語言中,讀文件的函數(shù)主要有。fgetc,fgetsfreadfscanffgetc,fgets1.fgetc函數(shù)從指定的文件讀入一個(gè)字符。例如,charc;
…c=fgetc(fp);/*假設(shè)該文件已打開,下同*/2.fgets函數(shù)
從指定的文件讀入指定長度的字符,例如charline[100];…fgets(line,100,fp);fread,
fread函數(shù)該函數(shù)的功能是,從指定的文件中讀入一組數(shù)據(jù)。其形式為fread(buffer,size,count,fp);其中: buffer 存放讀入數(shù)據(jù)的內(nèi)存首地址;Size 每個(gè)數(shù)據(jù)項(xiàng)的字節(jié)數(shù);count 數(shù)據(jù)項(xiàng)個(gè)數(shù);fp 文件類型指針。fscanffscanf該函數(shù)的功能是,從指定的文件中格式化讀數(shù)據(jù)。其一般形式為
fscanf(文件指針,格式控制,地址表);這個(gè)函數(shù)與格式輸入函數(shù)scanf很相似,它們的區(qū)別就在于,scanf函數(shù)是從鍵盤輸入數(shù)據(jù),而fscanf函數(shù)是從文件讀入數(shù)據(jù),因此在fscanf函數(shù)參數(shù)中多了一個(gè)文件指針,用于指出從哪個(gè)文件讀入數(shù)據(jù)。
向文件中寫數(shù)據(jù)寫文件函數(shù):對文件進(jìn)行寫操作,是指從程序向外存儲(chǔ)器的文件中寫數(shù)據(jù)。在C語言中,向文件寫數(shù)據(jù)的函數(shù)主要有fputc,fgetsfwritefprintffputc,fputs1.fputc函數(shù)向指定的文件寫入一個(gè)字符。例如,charc;
…fputc(c,fp);/*假設(shè)該文件已打開,下同*/若寫成功,則返回已輸出的字符,否則返回EOF2.fputs函數(shù)
向指定的文件寫入一段字符,例如charline[100];…fputs(line,fp);fwrite
fwrite函數(shù)將一組數(shù)據(jù)寫到指定的文件中。其形式為fwrite(buffer,size,count,fp);其中:buffer 輸出數(shù)據(jù)的首地址;
size 每個(gè)數(shù)據(jù)項(xiàng)的字節(jié)數(shù);
count 數(shù)據(jù)個(gè)數(shù);
fp 文件類型指針。fprintf
fprintf函數(shù)該函數(shù)的功能是,格式化寫數(shù)據(jù)到指定的文件中。其形式為
fprintf(文件指針,格式控制,輸出表);這個(gè)函數(shù)與格式輸出函數(shù)printf很相似,它們的區(qū)別就在于,printf函數(shù)是將數(shù)據(jù)輸出到顯示屏幕上,而fprintf函數(shù)是將數(shù)據(jù)輸出到文件中,因此在fprintf函數(shù)參數(shù)中多了一個(gè)文件指針,用于指出將數(shù)據(jù)輸出到哪個(gè)文件中。文件定位文件定位函數(shù):改變當(dāng)前(讀寫)位置在C語言中,函數(shù)主要有。rewindfseekftellrewind
1.rewind函數(shù)將文件的讀寫指針移動(dòng)到文件的開頭。其形式為
rewind(fp);其中fp是已經(jīng)打開的文件指針。fseek2..fseek函數(shù)該函數(shù)的功能是,將文件的讀寫指針移動(dòng)到指定的位置。其形式為fseek(文件指針,偏移量,起始位置);起始位置是指移動(dòng)文件讀寫指針的參考位置,它有以下3個(gè)值:
SEEK_SET或0 表示文件首
SEEK_CUR或1 表示當(dāng)前讀寫的位置
SEEK_END或2 表示文件尾ftell
ftell函數(shù)該函數(shù)的功能是,返回文件的當(dāng)前讀寫位置(出錯(cuò)返回-1L)。其形式為ftell(fp);C語言文件操作示例統(tǒng)計(jì)文件某文件letter.txt中的字符個(gè)數(shù)。C程序如下:#include"stdio.h"main(){longcount=0;
FILE*fp;
if((fp=fopen("letter.txt","r+"))==NULL){printf("cannotopenthisfile!\n");
exit(0);
}fgetc(fp);
while(!feof(fp)){fgetc(fp);count=count+1;}printf("count=%ld\n",count);
fclose(fp);}內(nèi)容文件操作概述
C/C++語言中的文件操作C#語言中的文件操作
文件的基本操作
文本文件的讀取與寫入
二進(jìn)制文件的讀寫操作C#讀取文件示例文件的基本操作File和FileInfo類File類和FileInfo類提供用于文件基本操作的方法,包括創(chuàng)建、復(fù)制、移動(dòng)、重命名和刪除文件;打開文件,讀取文件內(nèi)容和追加內(nèi)容到文件;獲取和設(shè)置文件的創(chuàng)建、訪問及寫入的時(shí)間戳信息等。File所有方法都是靜態(tài)的,調(diào)用時(shí)需要傳入目錄路徑參數(shù)。FileInfo類提供實(shí)例方法,需要針對要操作的目錄路徑創(chuàng)建FileInfo類的實(shí)例,然后調(diào)用相應(yīng)的實(shí)例方法,適用于對目錄路徑執(zhí)行多次操作。File類的靜態(tài)方法可以直接調(diào)用,而無需構(gòu)建對象實(shí)例,故適用于對文件執(zhí)行一次操作;然而File類的靜態(tài)方法對所有方法都執(zhí)行安全檢查,如果需要多次重用某個(gè)對象,建議使用FileInfo的相應(yīng)實(shí)例方法文本文件的讀取和寫入StreamReader類和
StreamWriter類分別以一種特定的編碼從字節(jié)流中讀取字符和向流中寫入字符StringReader類和
StringWriter類分別實(shí)現(xiàn)字符串的讀取和寫入操作StreamReader和StreamWriterStreamReader類實(shí)現(xiàn)一個(gè)
TextReader,使其以一種特定的編碼從字節(jié)流中讀取字符。StreamReader主要用于讀取標(biāo)準(zhǔn)文本文件的各行信息StreamWriter類實(shí)現(xiàn)一個(gè)
TextWriter,使其以一種特定的編碼向流中寫入字符。StreamWriter主要用于寫入標(biāo)準(zhǔn)文本文件信息二進(jìn)制文件的讀寫操作FileStream類支持通過其
Seek方法隨機(jī)訪問文件BinaryReader類和
BinaryWriter類在
Streams中讀取和寫入編碼的字符串和基元數(shù)據(jù)類型FileStream類FileStream類提供對文件進(jìn)行打開、讀取、寫入、關(guān)閉等操作,既支持同步讀寫操作,也支持異步讀寫操作。FileStream支持使用Seek方法對文件進(jìn)行隨機(jī)訪問,Seek通過字節(jié)偏移量將讀取/寫入位置移動(dòng)到文件中的任意位置,字節(jié)偏移量是相對于查找參考點(diǎn)(文件的開始、當(dāng)前位置或結(jié)尾,分別對應(yīng)于SeekOrigin.Begin、SeekOrigin.Current和SeekOrigin.End)BinaryReader和BinaryWriterBinaryReader類用特定的編碼將基元數(shù)據(jù)類型讀作二進(jìn)制值BinaryWriter類以二進(jìn)制形式將基元類型寫入流,并支持用特定的編碼寫入字符串讀取文件示例usingSystem;usingSystem.IO;namespaceCSharpBook.Chapter16{classStreamReaderWriterTest
{privateconststringFILE_NAME=@"c:\temp\TestFile.txt";publicstaticvoidMain(String[]args)
{
//創(chuàng)建StreamWriter實(shí)例以在文件中添加文本.using(StreamWritersw=newStreamWriter(FILE_NAME))
{
//在文件中添加文本.sw.Write("文本文件");sw.WriteLine("的寫入/讀取示例:");sw.WriteLine("----------------------------------");//Arbitraryobjectscanalsobewrittentothefile.sw.WriteLine("寫入整數(shù){0}或浮點(diǎn)數(shù){1}",1,4.2);boolb=false;chargrade='A';strings="MultipleDataType!";sw.WriteLine("寫入Boolean值、字符、字符串、日期:");sw.WriteLine(b);sw.WriteLine(grade);sw.WriteLine(s);sw.Write("當(dāng)前日期為:");sw.WriteLine(DateTime.Now);
}try
{
//創(chuàng)建StreamReader實(shí)例以從文本文件中讀取內(nèi)容.using(StreamReadersr=newStreamReader(FILE_NAME))
{Stringline;
//讀取文本文件每一行的內(nèi)容,直至文件結(jié)束.while((line=sr.ReadLine())!=null)
{Console.WriteLine(line);
}
}
}catch(Exceptione)
{//異常處理.Console.WriteLine("該文件不能正常讀取,原因如下:");Console.WriteLine(e.Message);
}Console.ReadLine();
}
}}課程小結(jié)打開文件讀取寫入定位C/C++fopenfgets/fgetcfputs/fputcfseekfreadfwritefscanffprintfC#StreamReaderStreamWriterBinaryReaderBinaryWriter課程小結(jié)
讀取文本文件的一般形式——Cfp=fopen(Filename,"r");while(!feof(fp)){ fgets(line,100,fp);
......);fclose(fp);課程小結(jié)
讀取文本文件的一般形式——C#StreamReadersr=File.OpenText(filename);while((line=sr.ReadLine())!=null)
{}sr.Close();字符串比較函數(shù)(C/C++)strncmp(constchar*string1,constchar*string2,size_tcount)string1,string2:Stringstocompare.count:Numberofcharacterstocompare.
作用:比較兩個(gè)字符串char*strstr(constchar*str,constchar*strSearch);str:Null-terminatedstringtosearch.strSearch:Null-terminatedstringtosearchfor.ReturnsapointertothefirstoccurrenceofstrSearchinstr,orNULLifstrSearchdoesnotappearinstr.IfstrSearchpointstoastringofzerolength,thefunctionreturnsstr.
作用:比較兩個(gè)字符串字符串查找函數(shù)C#IndexOf方法stringline;If(line.IndexOf(“…..”)!=-1){……}usingSystem;publicclassInsertTest{publicstaticvoidMain(){stringanimal1="fox";
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 廣東科學(xué)技術(shù)職業(yè)學(xué)院《民航英語》2023-2024學(xué)年第一學(xué)期期末試卷
- 廣東酒店管理職業(yè)技術(shù)學(xué)院《現(xiàn)場總線控制技術(shù)》2023-2024學(xué)年第一學(xué)期期末試卷
- 廣東金融學(xué)院《家用電器設(shè)計(jì)》2023-2024學(xué)年第一學(xué)期期末試卷
- 廣東工業(yè)大學(xué)《反應(yīng)工程概論》2023-2024學(xué)年第一學(xué)期期末試卷
- 廣東東軟學(xué)院《技術(shù)經(jīng)濟(jì)分析與生產(chǎn)管理》2023-2024學(xué)年第一學(xué)期期末試卷
- 廣東創(chuàng)新科技職業(yè)學(xué)院《第二外語日語(二)》2023-2024學(xué)年第一學(xué)期期末試卷
- 廣東白云學(xué)院《科學(xué)技術(shù)與工程倫理》2023-2024學(xué)年第一學(xué)期期末試卷
- 贛南師范大學(xué)科技學(xué)院《中國當(dāng)代文學(xué)(2)》2023-2024學(xué)年第一學(xué)期期末試卷
- 贛州師范高等??茖W(xué)校《有機(jī)寶石學(xué)》2023-2024學(xué)年第一學(xué)期期末試卷
- 甘孜職業(yè)學(xué)院《生物技術(shù)綜合性實(shí)驗(yàn)?zāi)K》2023-2024學(xué)年第一學(xué)期期末試卷
- 2023-2024學(xué)年四川省瀘州市小學(xué)數(shù)學(xué)四年級(jí)上冊期末評(píng)估測試題
- YC/T 273-2014卷煙包裝設(shè)計(jì)要求
- GB/T 9944-2015不銹鋼絲繩
- GB/T 5019.11-2009以云母為基的絕緣材料第11部分:塑型云母板
- 初中生家長會(huì)ppt
- GA/T 168-2019法醫(yī)學(xué)機(jī)械性損傷尸體檢驗(yàn)規(guī)范
- GA/T 1567-2019城市道路交通隔離欄設(shè)置指南
- 第六章環(huán)境污染物的特殊毒性及其評(píng)價(jià)致癌作用課件
- 醫(yī)療器械銷售工作總結(jié)-醫(yī)療器械銷售工作總結(jié)課件
- 2021-2022學(xué)年天津市和平區(qū)八年級(jí)(上)期末物理試題及答案解析
- 電梯制造與安裝安全規(guī)范解讀課件
評(píng)論
0/150
提交評(píng)論