商务网站建设中的必备功能上海推广网站

pingmian/2025/10/9 6:33:30/文章来源:
商务网站建设中的必备功能,上海推广网站,眉山市住房和城乡建设局网站,我做的网站搜不到本章重点 1. 为什么使用文件 2. 什么是文件 3. 文件的打开和关闭 4. 文件的顺序读写 5. 文件的随机读写 6. 文本文件和二进制文件 7. 文件读取结束的判定 8. 文件缓冲区 1. 为什么使用文件 我们在前面的文章介绍了通讯录的程序#xff0c;当通讯录运行起来的时候#xff0c…本章重点 1. 为什么使用文件 2. 什么是文件 3. 文件的打开和关闭 4. 文件的顺序读写 5. 文件的随机读写 6. 文本文件和二进制文件 7. 文件读取结束的判定 8. 文件缓冲区 1. 为什么使用文件 我们在前面的文章介绍了通讯录的程序当通讯录运行起来的时候可以给通讯录中增加、删除数据此时数据是存放在内存中当程序退出的时候通讯录中的数据自然就不存在了等下次运行通讯录程序的时候数据又得重新录入如果使用这样的通讯录就很难受。 我们在想既然是通讯录就应该把信息记录下来只有我们自己选择删除数据的时候数据才不复存在。 这就涉及到了数据持久化的问题我们一般数据持久化的方法有把数据存放在磁盘文件、存放到数据库等方式。 使用文件我们可以将数据直接存放在电脑的硬盘上做到了数据的持久化。 2. 什么是文件 我们一般谈的文件有两种程序文件、数据文件从文件功能的角度来分类的 1 程序文件 程序文件是指计算机程序的代码文件其中包含了一些指令和数据用于在计算机上执行特定的任务。这些文件可以在不同的编程语言中编写如C、Java、Python等。包括源程序文件后缀为.c,目标文件windows环境后缀为.obj,可执行程序windows环境后缀为.exe。 2 数据文件 数据文件是计算机存储数据的文件这些文件通常包含结构化数据或非结构化数据。数据文件可以存储在计算机的本地磁盘上或者存储在网络上的文件服务器或云存储中。 3.文件名 一个文件要有一个唯一的文件标识以便用户识别和引用。 文件名包含3部分文件路径文件名主干文件后缀 例如 c:\code\test.txt 为了方便起见文件标识常被称为文件名。   3. 文件的打开和关闭 1 文件指针 文件指针File pointer是程序中用于访问文件的一种数据类型。它保存了文件的位置信息包括文件的当前位置、文件的开头位置、文件的结尾位置等。 文件指针通常是一个指向 FILE 结构的指针通过文件指针可以实现对文件的读、写和定位操作。 每个被使用的文件都在内存中开辟了一个相应的文件信息区用来存放文件的相关信息如文件的 字文件状态及文件当前的位置等。这些信息是保存在一个结构体变量中的。该结构体类型是有系声明的取名FILE。 struct _iobuf { char *_ptr; int _cnt; char *_base; int _flag; int _file; int _charbuf; int _bufsiz; char *_tmpfname; }; typedef struct _iobuf FILE;FILE* pf;//文件指针变量定义pf是一个指向FILE类型数据的指针变量。可以使pf指向某个文件的文件信息区是一个结构体变量。通过该文件信息区中的信息就能够访问该文件。也就是说通过文件指针变量能够找到与它关联的文件。 2 文件的打开和关闭 文件在读写之前应该先打开文件在使用结束后应该关闭文件 在编写程序的时候在打开文件的同时都会返回一个FILE*的指针变量指向该文件也相当于建立了指针和文件的关系。 ANSIC 规定使用fopen函数来打开文件fclose来关闭文件。 //打开文件 FILE * fopen ( const char * filename, const char * mode ); //关闭文件 int fclose ( FILE * stream );文件的打开方式是多种多样的下面是各种打开方式根据需求在*mode处进行修改即可。 文件使用方式 含义 如果指定文件不存在 “r”只读 为了输入数据打开一个已经存在的文本文件 出错 “w”只写 为了输出数据打开一个文本文件 建立一个新的文件 “a”追加 向文本文件尾添加数据 建立一个新的文件 “rb”只读 为了输入数据打开一个二进制文件 出错 “wb”只写 为了输出数据打开一个二进制文件 建立一个新的文件 “ab”追加 向一个二进制文件尾添加数据 出错 “r”读写 为了读和写打开一个文本文件 出错 “w”读写 为了读和写建议一个新的文件 建立一个新的文件 “a”读写 打开一个文件在文件尾进行读写 建立一个新的文件 “rb”读写 为了读和写打开一个二进制文件 出错 “wb”读写 为了读和写新建一个新的二进制文件 建立一个新的文件 “ab”读写 打开一个二进制文件在文件尾进行读和写 建立一个新的文件 下面是一段示例 /* fopen fclose example */ #include stdio.h int main () { FILE * pFile; //打开文件 pFile fopen (myfile.txt,w); //文件操作 if (pFile!NULL) { fputs (fopen example,pFile); //关闭文件 fclose (pFile); } return 0; } 代码运行后在源文件的目录下会创建一个名字为myfile的文本文件而fputs函数将“fopen example”字符串输出到文件中在关闭文件后该文本文件会显示该字符串这样我们便完成了关于文件的读写。文件的读写也分两种形式分别是顺序读写和随机读写下面我们来一一介绍。 4. 文件的顺序读写 文件的顺序读写可以分为两种方式顺序读取和顺序写入。 顺序读取从文件开头开始依次读取每个字节或块直到读取到文件的末尾。这种读取方式适用于文件的内容是按照特定顺序排列的情况比如文本文件和数据文件。 顺序写入从文件开头开始依次写入每个字节或块直到写入完所有数据或者达到文件的最大容量。这种写入方式适用于需要按照一定顺序写入数据的情况比如生成二进制文件和写入网络数据流。 在实际应用中顺序读写文件的方式可以提高文件读写的效率同时也可以避免因为读写位置的频繁跳跃而带来的额外开销和不必要的操作。 下面是关于顺序读写的函数老铁们自行去实验一下哦。 功能函数名适用于字符输入函数fgetc所有输入流字符输出函数fputc所有输出流文本行输入函数fgets所有输入流文本行输出函数fputs所有输出流格式化输入函数fscanf所有输入流格式化输出函数fprintf所有输出流二进制输入fread文件二进制输出fwrite文件 5. 文件的随机读写   文件的随机读写指的是可以在文件中任意位置读取或写入数据。相比于顺序读写随机读写可以提高读写效率特别是对于大文件来说更加方便和灵活。 文件的随机读写需要先使用文件指针来指定读写位置可以使用fseek()函数来移动文件指针。该函数有三个参数第一个参数是文件指针第二个参数是偏移量第三个参数是偏移的起始位置可以为SEEK_SET、SEEK_CUR或SEEK_END。 1 fseek  根据文件指针的位置和偏移量来定位文件指针。 int fseek ( FILE * stream, long int offset, int origin ); 示例代码  /* rewind example */ #include stdio.h int main () { int n; FILE * pFile; char buffer [27]; pFile fopen (myfile.txt,w); for ( nA ; nZ ; n) fputc ( n, pFile); rewind (pFile); fread (buffer,1,26,pFile); fclose (pFile); buffer[26]\0; puts (buffer); return 0; } 2 ftell  返回文件指针相对于起始位置的偏移量 long int ftell ( FILE * stream ); 示例 /* ftell example : getting size of a file */ #include stdio.h int main () { FILE * pFile; long size; pFile fopen (myfile.txt,rb); if (pFileNULL) perror (Error opening file); else { fseek (pFile, 0, SEEK_END); // non-portable sizeftell (pFile); fclose (pFile); printf (Size of myfile.txt: %ld bytes.\n,size); } return 0; } 3 rewind   让文件指针的位置回到文件的起始位置 void rewind ( FILE * stream ); 示例代码 /* rewind example */ #include stdio.h int main () { int n; FILE * pFile; char buffer [27]; pFile fopen (myfile.txt,w); for ( nA ; nZ ; n) fputc ( n, pFile); rewind (pFile); fread (buffer,1,26,pFile); fclose (pFile); buffer[26]\0; puts (buffer); return 0; } 6. 文本文件和二进制文件  根据数据的组织形式数据文件被称为文本文件或者二进制文件。 数据在内存中以二进制的形式存储如果不加转换的输出到外存就是二进制文件。 如果要求在外存上以ASCII码的形式存储则需要在存储前转换。以ASCII字符的形式存储的文件就是文 本文件。 一个数据在内存中是怎么存储的呢 字符一律以ASCII形式存储数值型数据既可以用ASCII形式存储也可以使用二进制形式存储。 如有整数10000如果以ASCII码的形式输出到磁盘则磁盘中占用5个字节每个字符一个字节而 二进制形式输出则在磁盘上只占4个字节VS2013测试 7. 文件读取结束的判定  1 被错误使用的feof    feof函数需要输入一个文件指针 stream它会在指针所指向的文件达到结尾时返回非零值即 true否则返回 0 值即 false。 通常我们可以在循环读取文件时使用 feof() 函数来检查文件是否已到达结尾。具体地说我们可以在每次循环之前调用 fgets() 函数读取一行并使用 feof() 函数检查文件指针是否已到达结尾。如果到达结尾则跳出循环否则继续读取文件。 但很多人将它的返回值看着是衡量文件读取是否结束的标志这是错误的因为文件也会在读取过程中出现错误这得分情况进行考虑。 牢记在文件读取过程中不能用feof函数的返回值直接用来判断文件的是否结束。 而是应用于当文件读取结束的时候判断是读取失败结束还是遇到文件尾结束 1. 文本文件读取是否结束判断返回值是否为 EOF fgetc 或者 NULL fgets 例如 fgetc 判断是否为 EOF . fgets 判断返回值是否为 NULL . 2. 二进制文件的读取结束判断判断返回值是否小于实际要读的个数。 例如 fread判断返回值是否小于实际要读的个数 正确的使用 #include stdio.h #include stdlib.h int main(void) { int c; // 注意int非char要求处理EOF FILE* fp fopen(test.txt, r); if(!fp) { perror(File opening failed); return EXIT_FAILURE; } //fgetc 当读取失败的时候或者遇到文件结束的时候都会返回EOF while ((c fgetc(fp)) ! EOF) // 标准C I/O读取文件循环 { putchar(c); } //判断是什么原因结束的 if (ferror(fp)) puts(I/O error when reading); else if (feof(fp)) puts(End of file reached successfully); fclose(fp);如果是二进制文件的话 #include stdio.h enum { SIZE 5 }; int main(void) { double a[SIZE] {1.,2.,3.,4.,5.}; FILE *fp fopen(test.bin, wb); // 必须用二进制模式 fwrite(a, sizeof *a, SIZE, fp); // 写 double 的数组 fclose(fp); double b[SIZE]; fp fopen(test.bin,rb); size_t ret_code fread(b, sizeof *b, SIZE, fp); // 读 double 的数组 if(ret_code SIZE) { puts(Array read successfully, contents: ); for(int n 0; n SIZE; n) printf(%f , b[n]); putchar(\n); } else { // error handling if (feof(fp)) printf(Error reading test.bin: unexpected end of file\n); else if (ferror(fp)) { perror(Error reading test.bin); } } fclose(fp); } 8. 文件缓冲区   我们先来介绍一下ANSIC这个标准 ANSIC 是 C 语言的一种标准化版本是由 ANSIAmerican National Standards Institute美国国家标准化协会制定的。其全称是 American National Standard for Information Systems — Programming Language — CANSI C或简称 C89。这个标准于 1989 年发布主要为了解决 C 语言在不同编译器和计算机上的兼容性问题。 ANSIC 定义了 C 语言的语法、数据类型、函数库等同时还规定了 C 语言编译器和标准库的行为。ANSIC 的发布对于 C 语言的发展有着深远的影响使得 C 语言成为了一种可以跨平台使用的编程语言并且促进了 C 语言在工业界和学术界的广泛应用。 ANSIC 目前已经被多种编程语言所采纳包括 C、Java、Python 等。同时ANSIC 的标准也在不断地更新和修订例如 C99 和 C11 等。 ANSIC 标准采用“缓冲文件系统”处理的数据文件的所谓缓冲文件系统是指系统自动地在内存中为程序中每一个正在使用的文件开辟一块“文件缓冲区”。从内存向磁盘输出数据会先送到内存中的缓冲区装满缓冲区后才一起送到磁盘上。如果从磁盘向计算机读入数据则从磁盘文件中读取数据输入到内存缓冲区充满缓冲区然后再从缓冲区逐个地将数据送到程序数据区程序变量等。缓冲区的大小根据C编译系统决定的。 #include stdio.h #include windows.h //VS2013 WIN10环境测试 int main() { FILE*pf fopen(test.txt, w); fputs(abcdef, pf);//先将代码放在输出缓冲区 printf(睡眠10秒-已经写数据了打开test.txt文件发现文件没有内容\n); Sleep(10000); printf(刷新缓冲区\n); fflush(pf);//刷新缓冲区时才将输出缓冲区的数据写到文件磁盘 //注fflush 在高版本的VS上不能使用了 printf(再睡眠10秒-此时再次打开test.txt文件文件有内容了\n); Sleep(10000); fclose(pf); //注fclose在关闭文件的时候也会刷新缓冲区 pf NULL; return 0; } 这里可以得出一个结论 因为有缓冲区的存在C语言在操作文件的时候需要做刷新缓冲区或者在文件操作结束的时候关闭文件如果不做可能导致读写文件的问题。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/pingmian/89042.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

山西省财政厅门户网站三基建设抖音营销推广怎么做

1、git三个区域:工作区,暂存区,版本库 2、git文件状态:未跟踪,已跟踪(新添加,未修改,已修改) 如何查看暂存区和工作区文件状态:git status -s 3、查看版本记…

做网站需求文档asp.net网站发布到虚拟主机

1.实验环境 主机A和主机B连接到交换机,并与一台路由器互连 2.需求描述 主机A和主机B连接到交换机,并与一台路由器互连主机A和主机B设置为同一网段,网关设置为路由接口地址查看ARP相关信息,熟悉在PC和Cisco设备上的常用命令 3.推…

阜阳h5网站建设公司如何评估一个网站

1.mysql语句执行的步骤 客户端请求->连接器(验证用户身份,给与权限)查询缓存(存在缓存则直接返回,不存在则执行后续操作)分析器(对sql进行词法分析和语法分析操作)优化器&#x…

用kid做教育网站域名营销型官方网站

9月12日,中国移动第四届科技周“量子计算算法与应用”分论坛在北京成功举办,中国移动研究院院长黄宇红发表致辞,中国移动未来研究院院长崔春风全程主持。玻色量子作为光量子计算领域真机测试与场景应用的标杆企业应邀出席,玻色量子…

杭州下城区建设局网站wordpress 加入搜索

Spark Sql默认并行度 看官网,默认并行度200 https://spark.apache.org/docs/2.4.5/sql-performance-tuning.html#other-configuration-options 优化 在数仓中 task最好是cpu的两倍或者3倍(最好是倍数,不要使基数) 拓展 在本地 task需要自己设置&a…

深圳自适应网站开发公司郑州做网站好

来源:网络大数据据IDC声称,到2018年,全球人工智能(AI)和认知系统支出将达到190亿美元,这比2017年的支出总额增加约54%。并购在不断发生。仅2017年就见证了几起大宗收购,比如雅虎被Verizon收购、苹果收购Shazam等。知名…

主流数据网站韩国情侣网站模板

本帖最后由 PlyFly 于 2015-2-13 22:11 编辑各位花粉注意了,本次发布的B056固件,华为终于修复了DTS源码输出到功放不能正常解码的问题(如功放无声音、破音等等)。经实际测试,不用Kodi就能轻松将DTS源码输出到功放解码,且无任何异常…

网站项目开发案深圳建设网站商

原文地址:http://www.learnopencv.com/facial-landmark-detection/#comment-2471797375 作为计算机视觉研究员,我们很早就开始研究人脸。人脸分析领域最广为人知的就是人脸识别(face recognition).但是为了识别一幅图像中的人脸&…

网站模板定做wordpress 更新文章

一个、总结 简单的说,Filter的作用就是拦截(Tomcat的)service(Request,Response)方法。拿到Request、Response对象进行处理。然后释放控制。继续自己主动流转。其运用的还是“分层”的思想。至于为什么要增加这一层,为…

网站建设网站定制开发国家食品查询网入口

日前,2023年全民终身学习活动周全国总开幕式在重庆举行,自2005年起,终身学习活动周已连续举办了18届,累计带动4亿多群众参与全民终身学习活动周,有效推进全面阅读。 随着全民阅读氛围的持续浓厚,阅读不再是语文学科的专项,不再是学校教育的专属,家庭、社会都在积极参与进来。尤…

企业免费网站建设模板下载十秒折一个萝卜刀

文章目录 一、RCE二、命令执行/注入-概述三、命令执行-常见函数四、PHP命令执行-常见函数1、exec:2、system3、passthru4、shell_exec5、反引号 backquote 五、PHP命令执行-常见函数总结六、命令执行漏洞成因七、命令执行漏洞利用条件八、命令执行漏洞分类1、代码层…

咨询邯郸网站建设网站备案ps

作为一种使用大量文本数据训练的深度学习模型,大模型可以生成自然语言文本或理解语言文本的含义,是通向人工智能的一条重要途径。大模型可以应用于各种机器学习任务,包括自然语言处理、计算机视觉、语音识别、机器翻译、推荐系统、强化学习等…

网站服务器可以更换吗信用门户网站建设观摩

0 前言: STL,为什么你必须掌握 对于程序员来说,数据结构是必修的一门课。从查找到排序,从链表到二叉树,几乎所有的算法和原理都需要理解,理解不了也要死记硬背下来。幸运的是这些理论都已经比较成熟,算法也…

台州网站建设模板自己做网站需要啥

错误样例(使用UTL_HTTP发送http请求时,报出如下错误): 原因: 1、Oracle允许使用几个PL/SQL API(UTL_TCP, UTL_SMTP, UTL_MAIL, UTL_HTTP和 UTL_INADDR)访问外部网络服务,这些API都使用TCP协议。…

介绍自己做衣服的网站建网站好还是开天猫好

先看官网 一、不可变数据的概念 不可变数据意味着数据一旦创建,就不能被更改。在React中,每次对数据的修改都会返回一个新的数据副本,而不会改变原始数据。这种方式确保了数据的稳定性和一致性。 二、Props中的不可变数据 在React中&#xf…

华企立方做网站教育技术学网站模版

什么是高可用性 高可用性不是绝对的,只有相对更高的可用性。百分之百的可用性是不可能达到的。可用性的定义不仅仅包括服务正在运行的时间段,还包括应用是否能以足够好的性能处理请求。 导致宕机的原因 在运行环境的问题中,最普通的问题是…

网站制作公司北京网站建设公司江西网站建设哪家好

台湾Shopee虾皮电商平台为台湾本土卖家和消费者提供了一个线上交易平台。对于想要在台湾市场做虾皮电商的卖家来说,选择合适的产品是非常重要的。本文介绍一些做虾皮电商的选品方法和策略。 首先,了解市场需求是选品的基础。在进入台湾Shopee市场之前&a…

各大设计网站鞍山怎么做平台软件

1.Python 字符串 字符串可以看做是由单个文本字符构成的列表,每个字母构成一个列表元素,可以用下标取值,切片,用于for循环,用len()函数 name Zophoie name[2] name[-3] name[0:3]Zoin nameZOin name len(name)ZOOnot …

铁建设文件在什么网站下载做网站百科

P2392 kkksc03考前临时抱佛脚 - 洛谷 | 计算机科学教育新生态 (luogu.com.cn) 这个题目的难点在于我们该怎么尽量让左右大脑均分题目时间呢,我们这样想,我们先将所有题目的时间总和累加起来,取其一半。我们知道如果将这n道题目进行时间的尽量…

营销软件网站建设做网站要学会什么软件

2-3查找树 2-结点:含有一个键(及其对应的值)和两条链,左链接指向2-3树中的键都小于该结点,右链接指向的2-3树中的键都大于该结点。 3-结点:含有两个键(及其对应的值)和三条链,左链接指向的2-3树中的键都小于该结点&a…