卫星导航定位算法与程序设计-第9课文件读取_第1页
卫星导航定位算法与程序设计-第9课文件读取_第2页
卫星导航定位算法与程序设计-第9课文件读取_第3页
卫星导航定位算法与程序设计-第9课文件读取_第4页
卫星导航定位算法与程序设计-第9课文件读取_第5页
已阅读5页,还剩33页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

主讲:刘晖副教授武汉大学卫星导航定位技术研究中心卫星导航定位算法与程序设计单点定位算法的课程路线关于单点定位数据模型回顾单点定位总体设计GNSS中的协议矩阵函数编码实现各个模块时间算法坐标算法文件I/O卫星位置计算各项改正计算联合调试提交成果第九讲文件读写内容文件操作概述

C/C++语言中的文件操作C#语言中的文件操作课程小结文件操作概述(1)文件可以看作是数据的集合,一般保存在磁盘或其他存储介质上文件I/O(数据的输入/输出)通过流(Stream)来实现;流提供一种向后备存储写入字节和从后备存储读取字节的方式对于流有5种基本的操作:打开、读取、写入、改变当前位置、关闭文件操作概述(2)

文件读写是各种语言的基本功能之一

文件可分为

文本文件,又称为ASCII码文件,每个字节存放一个字符的ASCII码值

二进制文件,以16进制数来存放数据

文件操作的种类

打开,关闭

读,写

定位内容文件操作概述

C/C++语言中的文件操作

文件指针

打开与关闭文件读取文件

向文件写入数据

文件定位示例C#语言中的文件操作文件类型指针在C语言中,用文件类型指针来标识文件。定义文件类型指针的一般形式为

FILE*指针变量名;其中FILE是C编译系统定义的一种结构体类型,其中的成员用于存放有关文件的一些信息。指针变量名用于指向一个文件,实际上是用于存放文件缓冲区的首地址。例如,

FILE*fp;定义了一个结构体FILE类型的指针变量fp。文件打开与关闭(1)文件的打开在C语言中,打开一个文件的一般形式如下:

FILE*fp(或其他指针变量名);

…fp=fopen(“文件名”,“文件使用方式”);为了打开一个文件,首先要为该文件定义一个文件类型指针,然后用C语言提供的fopen函数打开文件。fopen函数有两个参数:“文件名”与“文件使用方式”。它们均是字符串。文件打开与关闭(2)文件使用方式文件使用方式涵义详细说明r只读若文件不存在,则返回空指针NULLw只写若指定的文件已存在,则其中原有内容被删去;否则创建一个新文件a追加向文件尾增加数据。若指定的文件不存在,则创建一个新文件r+读写指定的文件必须已存在,否则返回NULLw+读写若指定的文件已存在,则其中原有内容被删去a+读写

追加写。文件打开与关闭(3)文件的关闭对文件操作完成后,要关闭文件。在C语言中,关闭文件的一般形式如下:

fclose(fp);fclose函数的主要功能是将由fp指向的缓冲区中的数据存放到外存储器的文件中,然后释放该缓冲区。读取文件数据

文件读函数:对文件进行读操作,是指从外存储器的文件中向程序输入数据。在C语言中,读文件的函数主要有。fgetc,fgetsfreadfscanffgetc,fgets1.fgetc函数从指定的文件读入一个字符。例如,charc;

…c=fgetc(fp);/*假设该文件已打开,下同*/2.fgets函数

从指定的文件读入指定长度的字符,例如charline[100];…fgets(line,100,fp);fread,

fread函数该函数的功能是,从指定的文件中读入一组数据。其形式为fread(buffer,size,count,fp);其中: buffer 存放读入数据的内存首地址;Size 每个数据项的字节数;count 数据项个数;fp 文件类型指针。fscanffscanf该函数的功能是,从指定的文件中格式化读数据。其一般形式为

fscanf(文件指针,格式控制,地址表);这个函数与格式输入函数scanf很相似,它们的区别就在于,scanf函数是从键盘输入数据,而fscanf函数是从文件读入数据,因此在fscanf函数参数中多了一个文件指针,用于指出从哪个文件读入数据。

向文件中写数据写文件函数:对文件进行写操作,是指从程序向外存储器的文件中写数据。在C语言中,向文件写数据的函数主要有fputc,fgetsfwritefprintffputc,fputs1.fputc函数向指定的文件写入一个字符。例如,charc;

…fputc(c,fp);/*假设该文件已打开,下同*/若写成功,则返回已输出的字符,否则返回EOF2.fputs函数

向指定的文件写入一段字符,例如charline[100];…fputs(line,fp);fwrite

fwrite函数将一组数据写到指定的文件中。其形式为fwrite(buffer,size,count,fp);其中:buffer 输出数据的首地址;

size 每个数据项的字节数;

count 数据个数;

fp 文件类型指针。fprintf

fprintf函数该函数的功能是,格式化写数据到指定的文件中。其形式为

fprintf(文件指针,格式控制,输出表);这个函数与格式输出函数printf很相似,它们的区别就在于,printf函数是将数据输出到显示屏幕上,而fprintf函数是将数据输出到文件中,因此在fprintf函数参数中多了一个文件指针,用于指出将数据输出到哪个文件中。文件定位文件定位函数:改变当前(读写)位置在C语言中,函数主要有。rewindfseekftellrewind

1.rewind函数将文件的读写指针移动到文件的开头。其形式为

rewind(fp);其中fp是已经打开的文件指针。fseek2..fseek函数该函数的功能是,将文件的读写指针移动到指定的位置。其形式为fseek(文件指针,偏移量,起始位置);起始位置是指移动文件读写指针的参考位置,它有以下3个值:

SEEK_SET或0 表示文件首

SEEK_CUR或1 表示当前读写的位置

SEEK_END或2 表示文件尾ftell

ftell函数该函数的功能是,返回文件的当前读写位置(出错返回-1L)。其形式为ftell(fp);C语言文件操作示例统计文件某文件letter.txt中的字符个数。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);}内容文件操作概述

C/C++语言中的文件操作C#语言中的文件操作

文件的基本操作

文本文件的读取与写入

二进制文件的读写操作C#读取文件示例文件的基本操作File和FileInfo类File类和FileInfo类提供用于文件基本操作的方法,包括创建、复制、移动、重命名和删除文件;打开文件,读取文件内容和追加内容到文件;获取和设置文件的创建、访问及写入的时间戳信息等。File所有方法都是静态的,调用时需要传入目录路径参数。FileInfo类提供实例方法,需要针对要操作的目录路径创建FileInfo类的实例,然后调用相应的实例方法,适用于对目录路径执行多次操作。File类的静态方法可以直接调用,而无需构建对象实例,故适用于对文件执行一次操作;然而File类的静态方法对所有方法都执行安全检查,如果需要多次重用某个对象,建议使用FileInfo的相应实例方法文本文件的读取和写入StreamReader类和

StreamWriter类分别以一种特定的编码从字节流中读取字符和向流中写入字符StringReader类和

StringWriter类分别实现字符串的读取和写入操作StreamReader和StreamWriterStreamReader类实现一个

TextReader,使其以一种特定的编码从字节流中读取字符。StreamReader主要用于读取标准文本文件的各行信息StreamWriter类实现一个

TextWriter,使其以一种特定的编码向流中写入字符。StreamWriter主要用于写入标准文本文件信息二进制文件的读写操作FileStream类支持通过其

Seek方法随机访问文件BinaryReader类和

BinaryWriter类在

Streams中读取和写入编码的字符串和基元数据类型FileStream类FileStream类提供对文件进行打开、读取、写入、关闭等操作,既支持同步读写操作,也支持异步读写操作。FileStream支持使用Seek方法对文件进行随机访问,Seek通过字节偏移量将读取/写入位置移动到文件中的任意位置,字节偏移量是相对于查找参考点(文件的开始、当前位置或结尾,分别对应于SeekOrigin.Begin、SeekOrigin.Current和SeekOrigin.End)BinaryReader和BinaryWriterBinaryReader类用特定的编码将基元数据类型读作二进制值BinaryWriter类以二进制形式将基元类型写入流,并支持用特定的编码写入字符串读取文件示例usingSystem;usingSystem.IO;namespaceCSharpBook.Chapter16{classStreamReaderWriterTest

{privateconststringFILE_NAME=@"c:\temp\TestFile.txt";publicstaticvoidMain(String[]args)

{

//创建StreamWriter实例以在文件中添加文本.using(StreamWritersw=newStreamWriter(FILE_NAME))

{

//在文件中添加文本.sw.Write("文本文件");sw.WriteLine("的写入/读取示例:");sw.WriteLine("----------------------------------");//Arbitraryobjectscanalsobewrittentothefile.sw.WriteLine("写入整数{0}或浮点数{1}",1,4.2);boolb=false;chargrade='A';strings="MultipleDataType!";sw.WriteLine("写入Boolean值、字符、字符串、日期:");sw.WriteLine(b);sw.WriteLine(grade);sw.WriteLine(s);sw.Write("当前日期为:");sw.WriteLine(DateTime.Now);

}try

{

//创建StreamReader实例以从文本文件中读取内容.using(StreamReadersr=newStreamReader(FILE_NAME))

{Stringline;

//读取文本文件每一行的内容,直至文件结束.while((line=sr.ReadLine())!=null)

{Console.WriteLine(line);

}

}

}catch(Exceptione)

{//异常处理.Console.WriteLine("该文件不能正常读取,原因如下:");Console.WriteLine(e.Message);

}Console.ReadLine();

}

}}课程小结打开文件读取写入定位C/C++fopenfgets/fgetcfputs/fputcfseekfreadfwritefscanffprintfC#StreamReaderStreamWriterBinaryReaderBinaryWriter课程小结

读取文本文件的一般形式——Cfp=fopen(Filename,"r");while(!feof(fp)){ fgets(line,100,fp);

......);fclose(fp);课程小结

读取文本文件的一般形式——C#StreamReadersr=File.OpenText(filename);while((line=sr.ReadLine())!=null)

{}sr.Close();字符串比较函数(C/C++)strncmp(constchar*string1,constchar*string2,size_tcount)string1,string2:Stringstocompare.count:Numberofcharacterstocompare.

作用:比较两个字符串char*strstr(constchar*str,constchar*strSearch);str:Null-terminatedstringtosearch.strSearch:Null-terminatedstringtosearchfor.ReturnsapointertothefirstoccurrenceofstrSearchinstr,orNULLifstrSearchdoesnotappearinstr.IfstrSearchpointstoastringofzerolength,thefunctionreturnsstr.

作用:比较两个字符串字符串查找函数C#IndexOf方法stringline;If(line.IndexOf(“…..”)!=-1){……}usingSystem;publicclassInsertTest{publicstaticvoidMain(){stringanimal1="fox";

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论