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

网站建设与管理内容seo技术外包公司

网站建设与管理内容,seo技术外包公司,wordpress更改文件夹,企业网站建设相关书籍在线阅读前言:上篇文章,我们已经学习了有关本地磁盘文件的常用文件操作,已经能够对本地文件进行调用与读写。我们磁盘中还存在着一些内容用二进制存储的文件,这也就是我们今天将要讲解的内容。一、文本文件与二进制文件根据数据的组织形式…

前言:

上篇文章,我们已经学习了有关本地磁盘文件的常用文件操作,已经能够对本地文件进行调用与读写。我们磁盘中还存在着一些内容用二进制存储的文件,这也就是我们今天将要讲解的内容。

一、文本文件与二进制文件

根据数据的组织形式,我们将数据文件称为文本文件和而二进制文件

数据在内存中以二进制的形式存储,如果不加转换的输出到外存,就是二进制文件;
如果要求在外存上以ASCII码的形式存储,则需要在存储前转换。以ASCII字符的形式存储的文件就是文 本文件。

那么数据在内存中是如何存储的的呢?

实际上字符在内存中的存储一律是以ASCII码值得形式进行存储的,数值型数据既可以用ASCII码存储,也可以用二进制形式进行存储。例如十进制数字10000在进行存储时,就可以有两种存储形式:

①二进制形式:
00000000 00000000 00100111 00010000
②ASCII码形式:
00110001 00110000 00110000 00110000
1 0 0 0

接着让我们来看看示例:

#include <stdio.h>
int main()
{int a = 10000;FILE* pf = fopen("test.txt", "wb");//wb表示只写模式打开二进制文件if (pf == NULL){perror(fopen);}else{fwrite(&a, 4, 1, pf);//二进制的形式写到文件中//将变量a中的数据,每四个字节存储一次,写入文件指针pf指向的文件;fclose(pf);}pf = NULL;return 0;
}

上面这段代码运行成功后,我们就已经成功将变量a中的数据写入到本地磁盘对应的txt文件中了,可是我们发现,当我们尝试打开本地文件查看存储的数据时,里面看起来并不是我们所想要的东西:

导致这样的原因是因为我们使用了“wb”方式,即以二进制形式进行了写入,而要查看这部分内容我们只需要将文件添加到vs里面并且将打开方式改为二进制编制器。

具体步骤:选中我们的“源文件”栏右击选择“添加”,“添加现有项”,将写入时创建的txt文件添加进来,然后选中该文件,右击选择"打开方式"接着在选项框中下拉选择“二进制编制器”,此时我们便可以看到文件内的实际存储情况了:

但是这好像也不是我们存储的数据,我们再来看看我的的语句:

fwrite(&a,4,1,pf);

根据这条语句,我们在进行数据写入时,是每次四个字节进行写入的,于是根据其二进制码可以得到它的存储为:

00000000 00000000 00100111 00010000
我们再将它每四个字节分开来:
0000 0000 0000 0000 0010 0111 0001 0000
于是就可以得到:
00 00 27 10

又因为在之前我们就验证过vs采用的是小端存储模式,于是在进行压栈时会将数据进行倒置存储,于是就有:

10 27 00 00

二、文件读取结束的判断:

1.被错误使用feof函数:

在我们日常写代码过程,有很多人都会错误地使用了feof函数,将其用于判断文件是否读取结束,而这种使用方式是错误的。

大家一定要牢记

在文件读取过程中,不能用feof函数的返回值直接用来判断文件的是否结束。 而是应用于当文件读取结束的时候,判断是读取失败结束,还是遇到文件尾结束。

2.判断文件读取结束:

文本文件判断文件读取结束方法:

①使用fgetc函数判断是否为EOF;
②使用fgrts函数判断返回值是否为NULL;

例如:

#include <stdio.h>
#include <stdlib.h>
int main()
{int c;// 注意:int,非char,要求处理EOFFILE* fp = fopen("test.txt", "r");if (!fp){perror("File opening failed");return 1;}//fgetc 当读取失败的时候或者遇到文件结束的时候,都会返回EOFwhile ((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);fp = NULL;return 0;
}

二进制文件判断文件读取结束方法:

使用fread函数判断返回值是否小于实际要读取的数据个数

例如:

#include <stdio.h>
enum { SIZE = 5 };
int main()
{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 handlingif (feof(fp))printf("Error reading test.bin: unexpected end of file\n");else if (ferror(fp)) {perror("Error reading test.bin");}}fclose(fp);fp=NULL;
}

三、文件缓冲区:

文件缓冲区是用以暂时存放读写期间的文件数据而在内存区预留的一定空间。
ANSIC 标准采用“缓冲文件系统”处理的数据文件的,所谓缓冲文件系统是指系统自动地在内存中为程序 中每一个正在使用的文件开辟一块“文件缓冲区”。从内存向磁盘输出数据会先送到内存中的缓冲区,装 满缓冲区后才一起送到磁盘上。如果从磁盘向计算机读入数据,则从磁盘文件中读取数据输入到内存缓 冲区(充满缓冲区),然后再从缓冲区逐个地将数据送到程序数据区(程序变量等)。缓冲区的大小根 据C编译系统决定的。

这边可以通过代码来验证缓冲区:

#include <stdio.h>
#include <windows.h>
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.ritt.cn/news/25251.html

相关文章:

  • 网页设计入门 电子书下载搜索引擎的关键词优化
  • 网上做服装批发网站网络推广软文怎么写
  • 如何构建个人网站产品推广公司
  • html5高端网站建设温州免费建站模板
  • wordpress响应商城网站关键词怎么优化排名
  • 石家庄网站建设备案晚上必备免费软件大全苹果
  • 学做网站看什么线上推广策略
  • 赚钱软件真实可靠微信提现谷歌seo推广招聘
  • 扬州专业做网站企业河南网站推广优化
  • 做网站banner图电商运营的基本内容
  • 网站在线客服聊天系统网络营销的八大职能
  • 西直门网站建设磁力宅
  • 做网站赚钱交税站长之家ppt素材
  • 培训机构网站建设方案今日新闻摘抄50字
  • html5+css3 网站福州seo兼职
  • 视频网站如何做全国最好的广告公司加盟
  • mysql php网站开发搜索引擎优化是什么意思啊
  • wordpress网站建设教程视频关键词查询工具包括哪些
  • 做跨境电商需要哪些条件北京网络seo
  • 做色流网站要注意什么问题营销页面
  • 网站运营配置网络营销策略制定
  • 重庆品牌服装网站建设seo快速推广
  • 专做排名的网站搜索引擎网站有哪些
  • 宁波免费做网站广告联盟app下载官网
  • 企业做网站和宣传册的作用哈尔滨关键词排名工具
  • 秒速网站建设搜索引擎营销有哪些方式
  • 天天向上 网站建设网站建设与网页设计制作
  • 模板建站系统个人网站建站流程
  • 网站建设公司好做吗最近三天的新闻热点
  • 前端和网站部署做网站的百度seo关键词排名