衛(wèi)星導(dǎo)航定位算法與程序設(shè)計(jì)-第9課文件讀取_第1頁
衛(wèi)星導(dǎo)航定位算法與程序設(shè)計(jì)-第9課文件讀取_第2頁
衛(wèi)星導(dǎo)航定位算法與程序設(shè)計(jì)-第9課文件讀取_第3頁
衛(wèi)星導(dǎo)航定位算法與程序設(shè)計(jì)-第9課文件讀取_第4頁
衛(wèi)星導(dǎo)航定位算法與程序設(shè)計(jì)-第9課文件讀取_第5頁
已閱讀5頁,還剩33頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論