当前位置: 首页 > news >正文

沈阳网站建设服务器/百度网页翻译

沈阳网站建设服务器,百度网页翻译,申请域名地址,开发一个网站需要几个人二进制文件 二进制文件与结构数组非常相似,只是结构位于磁盘文件中而不是内存中的数组中。因为二进制文件中的结构在磁盘上,所以您可以创建非常大的它们的集合(仅受可用磁盘空间的限制)。它们也是永久性的并且始终可用。唯一的缺点…

二进制文件

二进制文件与结构数组非常相似,只是结构位于磁盘文件中而不是内存中的数组中。因为二进制文件中的结构在磁盘上,所以您可以创建非常大的它们的集合(仅受可用磁盘空间的限制)。它们也是永久性的并且始终可用。唯一的缺点是磁盘访问时间慢。

二进制文件有两个区别于文本文件的特征:

  • 您可以立即跳转到文件中的任何结构,它提供与数组中一样的随机访问。
  • 您可以随时更改文件中任何位置的结构内容。

二进制文件通常也比文本文件具有更快的读写时间,因为记录的二进制图像直接从内存存储到磁盘(反之亦然)。在文本文件中,所有内容都必须来回转换为文本,这需要时间。

Pascal如同C一样,可以

非常干净地支持文件结构概念。打开文件后,您可以读取结构、写入结构或查找文件中的任何结构。这个文件概念支持文件指针的概念。打开文件时,指针指向记录 0(文件中的第一条记录)。任何读取操作都会读取当前指向的结构并将指针向下移动一个结构。任何写操作都会写入当前指向的结构并将指针向下移动一个结构。Seek将指针移动到请求的记录。

请记住,C 将磁盘文件中的所有内容视为从磁盘读取到内存或从内存读取到磁盘的字节块。C 使用文件指针,但它可以指向文件中的任何字节位置。因此,您必须跟踪事物。

以下程序说明了这些概念:

program demo_file_bin;{$IFDEF FPC}{$MODE Delphi}
{$ENDIF}{$APPTYPE CONSOLE}{$R *.res}usesSysUtils, Windows,libc_win in '..\libfiber-delphi\libc_win.pas';constLEN = 50;{$POINTERMATH ON}
type
stud_t = recordname : array[0..LEN] of TChar;id : uint32;average : Single;end;(* https://www.skenz.it/cs/c_language/write_and_read_a_binary_file *)
function main:integer;
varfp : PFILE;student : array[0..1] of stud_t;i : integer;row : array[0..(LEN+1)-1] of TChar;n_stud : uint32;
beginstrcopy(student[0].name, 'Steven');student[0].id := 120000;student[0].average := 25.5;strcopy(student[1].name, 'Julia');student[1].id := 120001;student[1].average := 28.5;fp := fopen('out.bin', 'w'); { Open the file for writing }if fp = nil then beginWriteln('Error: file out.bin cannot be opened');exit(1);end;{ Write the file }{ NOTE 2: a binary file sometimes cannot be readablecorrectly in a PC that it is not the one which generates it,because, for instance, integer numbers can be coded with adifferent number of bytes.}{ Write in binary all the data contained in the structure }fwrite(@student, sizeof(stud_t), 2, fp);{ DIMENSION OF THE GENERATED FILEThe dimension of the generated file will be:n_stud*sizeof(stud_t)in the case of the computer used to test the program:2*60 = 120 byte}fclose(fp); { Close the file }fp := fopen('out.bin', 'r'); { Open the file for reading }if fp = nil then beginWriteln('Error: file out.bin cannot be opened');exit(1);end;{ Read the file }n_stud := 0;student[0] := default(stud_t);student[1] := default(stud_t);while fread(@student[n_stud], sizeof(stud_t), 1, fp) = 1  doInc(n_stud);fclose(fp); { Close the file }{ Print the read records }for i := 0 to n_stud-1 dowriteln(format('%s %d %f',[student[i].name, student[i].id, student[i].average]));Result := 0;
end;begintry{ TODO -oUser -cConsole Main : Insert code here }main;excepton E: Exception doWriteln(E.ClassName, ': ', E.Message);end;
end.

 

在此程序中,使用了结构描述rec ,但您可以使用任何您想要的结构描述。您可以看到fopenfclose 的工作方式与它们对文本文件所做的完全一样。

这里的新函数是freadfwritefseek。fread 函数有四个参数:

  • 内存地址
  • 每个块要读取的字节数
  • 要读取的块数
  • 文件变量

因此,行fread(&r,sizeof(struct rec),1,f); 表示从文件f(从文件指针的当前位置)读取 12 个字节( rec的大小)到内存地址&r中。请求一个 12 字节的块。通过将 1 更改为 100,将 100 个块从磁盘读取到内存中的数组同样容易。

fwrite函数的工作方式相同,但将字节块从内存移动到文件fseek函数将文件指针移动到文件中的一个字节。通常,您以sizeof(struct rec)增量移动指针以将指针保持在记录边界。搜索时可以使用三个选项:

  • SEEK_SET
  • SEEK_CUR
  • SEEK_END

SEEK_SET将指针从文件开头向下移动x个字节(从文件中的字节 0 开始)。SEEK_CUR将指针从当前指针位置向下移动x个字节。SEEK_END将指针从文件末尾移开(因此您必须使用此选项使用负偏移量)。

上面的代码中出现了几个不同的选项。特别要注意使用r+模式打开文件的部分。这将打开文件进行读写,从而允许更改记录。该代码查找记录、读取它并更改字段;然后它会返回,因为读取会替换指针,并将更改写回。

 

http://www.jmfq.cn/news/5219173.html

相关文章:

  • jetpack by wordpress/南宁seo优化公司排名
  • 企业建设网站网站建设公司/重庆seo点击工具
  • 自己怎么做拼单网站/百度查看订单
  • 装修公司加盟哪个好/seo网站排名优化公司哪家
  • 网站APP注册做任务/吴中seo页面优化推广
  • 怎么去掉网站首页尾缀/市场营销的八个理论
  • 电子政务与网站建设 总结/国际最新消息
  • 企业网站案例展示/长沙网站制作推广
  • 柳州做网站哪家好/网络推广十大平台
  • 如何给网站死链接做404/百度搜索关键词排行榜
  • 清远做网站seo/商丘seo排名
  • 顺德网站建设合理使用颜色搭配_方能达到最佳视觉效果/慈溪seo排名
  • 彩票网站的统计怎么做/小程序开发软件
  • 网站索引量下降/论坛推广
  • 亚洲做性自拍视频网站/经典营销案例100例
  • 后台网站地图/网站建设网站推广
  • 百度云平台建设网站/百度推广官方网站登录入口
  • 网站建设项目策划/百度指数需求图谱
  • 网站开发维护工作/人教版优化设计电子书
  • wordpress woo theme/广州关键词优化外包
  • 湖南网站建设的公司排名/seo关键词优化外包公司
  • 代刷网网站怎么做/免费的网站推广在线推广
  • 网站建设协议/中国新闻网最新消息
  • 怎么做网站的动效/今日新闻联播
  • 网站建设软件开发公司/大一网页设计作业成品免费
  • 高唐网站建设/公众号免费推广平台
  • 深圳网站建设信科便宜/优化内容
  • 萍乡网站设计公司/品牌推广策划营销策划
  • 做二手手机的网站有哪些/免费注册推广网站
  • 网站未备案什么意思/网站排名优化公司哪家好