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

张家港市住房城乡建设局网站访问网站出来的是目录

张家港市住房城乡建设局网站,访问网站出来的是目录,网站推广的主要方法,百度快速排名技术培训教程本章要分享的内容是C语言中文件操作的内容#xff0c;为了方便大家学习#xff0c;目录如下 目录 1.为什么要使用文件 2.什么是文件 2.1 程序文件 2.2 数据文件 2.3 文件名 3.文件的打开和关闭 3.1文件指针 3.2打开和关闭 4.文件的顺序读写 4.1顺序读写函数介绍…本章要分享的内容是C语言中文件操作的内容为了方便大家学习目录如下 目录 1.为什么要使用文件 2.什么是文件 2.1   程序文件 2.2 数据文件 2.3   文件名 3.文件的打开和关闭 3.1文件指针 3.2打开和关闭 4.文件的顺序读写 4.1顺序读写函数介绍 4.1.1   fputc 4.1.2   fgetc 4.1.3   fputs 4.1.4    fgets 4.1.5  fprintf 4.1.6   fscanf 1.为什么要使用文件 我们前面学习结构体时写了通讯录的程序当通讯录运行起来的时候可以给通讯录中增加、删除数据此时数据是存放在内存中当程序退出的时候通讯录中的数据自然就不存在了等下次运行通讯录程序的时候数据又得重新录入如果使用这样的通讯录就很难受。 我们在想既然是通讯录就应该把信息记录下来只有我们自己选择删除数据的时候数据才不复存在。 这就涉及到了数据持久化的问题我们一般数据持久化的方法有把数据存放在磁盘文件、存放到数据库等方式。使用文件我们可以将数据直接存放在电脑的硬盘上做到了数据的持久化。 2.什么是文件 我的回答是磁盘上的文件都是文件。 就是说打开你的电脑你会看到电脑上有着C盘D盘或者还有的人买了容量更大的硬盘 这些硬盘中所有的东西都可以被成为文件 但是在程序设计中我们一般谈的文件有两种程序文件数据文件。 2.1   程序文件 包括我们写代码时的.c文件、.cpp文件这些就被称为源文件。还有目标文件windows环境后缀为.obj,可执行程序windows环境后缀为.exe就是我们编写代码运行时所产生的文件都叫做程序文件 可以简单写个代码展示一下 然后再按照文件路径打开文件 我们就可以看到C Source就是上面所说的源文件 那么在进入Debug文件夹中 就可以看到我们上面讲到的.exe文件和.OBJ文件这些都是程序文件 2.2 数据文件 文件的内容不一定是程序而是程序运行时读写的数据比如程序运行需要从中读取数据的文件 或者输出内容的文件。 上面提到的通讯录时运行时只能存放在内存中使用下次使用时内容就会丢失所以要将其存放再硬盘上存放成文件才能想什么时候用就什么时候用我们下面深度研究。 我们的代码在编译时会生成.exe文件也就是我们在通讯录中增删改查的结果那如何放到硬盘中呢这里画图给大家展示 假如我要将生成的程序文件存放到硬盘中也就是存放到.txt文件中这样存放数据的就是数据文件。 本篇具体要讲的就是写和读的操作 在这之前还需了解一些其他的东西 2.3   文件名 一个文件要有一个唯一的文件标识以便用户识别和引用。 文件名包含3部分文件路径文件名主干文件后缀 例如 c:\code\test.txt 为了方便起见文件标识常被称为文件名。 那文件是怎么操作的呢 3.文件的打开和关闭 打开文件和关闭文件就如同我们使用冰箱一样要用文件夹里的东西首先要和使用冰箱一样打开冰箱的们然后使用里面的东西最后再关上冰箱也就是要关闭文件夹。这个操作可以是读也可以是写最后要关闭文件夹。 3.1文件指针 看到指针两个字可能有人就会想到之前学到的数组指针函数指针等等的各种指针但是其实文件指针和他们不一样文件指针本身就是一种被定义好的类型的指针。  缓冲文件系统中关键的概念是“文件类型指针”简称“文件指针”。 每个被使用的文件都在内存中开辟了一个相应的文件信息区用来存放文件的相关信息如文件的名字文件状态及文件当前的位置等。这些信息是保存在一个结构体变量中的。该结构体类型是由系统声明的取名FILE. 给大家用图画来理解 图中的意思就是说当我们要对这个data.txt数据文件进行读或者写的操作时它就会主动去维护一块内存这块内存叫做文件信息区这个文件信息去就是为了描述这块文件的用来存放文件的信息如文件的名字文件状态及文件当前的位置等。 那这个文件信息区怎么再内存中呢那就要用到FILE来开辟一段空间了 利用   FILE f  来开辟出这一段文件信息区也可以将  f  理解为结构体变量这个结构体的类型就是FILE。 每当打开一个文件的时候系统会根据文件的情况自动创建一个FILE结构的变量并填充其中的信息所以使用者不必关心细节。 一般都是通过一个FILE的指针来维护这个FILE结构的变量这样使用起来更加方便。 下面我们可以创建一个FILE*的指针变量: FILE* pf;//文件指针变量 定义pf是一个指向FILE类型数据的指针变量。可以使pf指向某个文件的文件信息区是一个结构体变量。通过该文件信息区中的信息就能够访问该文件。也就是说通过文件指针变量能够找到与它关联的文件。 比如下图 3.2打开和关闭 文件在读写之前应该先打开文件在使用结束之后应该关闭文件。 在编写程序的时候在打开文件的同时都会返回一个FILE*的指针变量指向该文件也相当于建立了指 针和文件的关系。 ANSIC 规定使用fopen函数来打开文件fclose来关闭文件。 示例 /打开文件 FILE * fopen ( const char * filename, const char * mode ); //关闭文件 int fclose ( FILE * stream ); 我们不妨到官网来看看两个函数的解析 可以看到有两个参数第一个参数的意思就是文件名的意思也就是你想操作的那个文件的名称第二个参数是打开方式。有哪些打开方式呢取决于你相对文件进行什么操作。 打开方式如下图 可以看到有非常多的不同的打开方式 这里为大家总结了几种 接下来上手写代码 int main() {//打开文件FILE* pffopen(test.txt, w);//写文件//关闭文件return 0; } 这就是一个以写的方式打开一个文件 但是我们需要注意的是在我的文件路径下没有这个文件 这时就需要看上表的内容 没有我们想要打开的文件时他就会建立一个新的文件然后我们还要注意的是函数的返回类型是一个指针类型所以我们不妨 定义一个FILE *类型的指针变量pf来接收这时候是把我们上面讲过的文件信息区的地址放到pf里去pf就可以找到文件信息区的地址就可以找到文件并且操作文件。以上是打开文件操作 我们可以看到上面的操作对应表中会有出错的结果如果打开文件失败的话就会返回一个空指针所以我们要像以前一样对它的返回值加以判断 以下代码就是正常完整的打开文件的操作代码 int main() {//打开文件FILE* pffopen(test.txt, w);if (pf NULL){perror(fopen);return 1;}//写文件//关闭文件return 0; } 接下来是如何关闭文件 我们可以看到返回类型是一个整形参数只需要将那个文件指针传过去即可 同时我们关闭文件后要避免野指针的使用所以也要将其变为空指针。 这时候代码跑起来 我们就会再文件夹中找到我们所创建的文件  就是那个大小为0kb的test.c文件。 那我们将写的形式改为以读的形式打开呢表格上写的是出错 代码运行起来 可以看到将w改成r时可以看到打开文件出错。 以上我们所说的打开test.c文件打开的路径时相对路径也就是在当前的工程下区操作文件的 那如果要操作别的文件该怎么办呢 这里我用桌面上的文件来演示 桌面上有一个test.c文件我们想要知道他的文件路径可以右键打开她的属性 这时我们就可以把他的文件路径拷贝到fopen函数的参数中 int main() {//打开文件FILE* pffopen(C:\\Users\\19110\\Desktop\\test2.txt, r);if (pf NULL){perror(fopen);return 1;}//写文件//关闭文件fclose(pf);pf NULL;return 0; } 可以看到打开成功了因为是空文本所以什么都没有 当我们用写的操作打开后也就是将  r  改为  w 系统就会在桌面上新创建一个txt的文件大家可以上手尝试一下。 以上就是打开和关闭文件的操作。 4.文件的顺序读写 4.1顺序读写函数介绍 接下来分享一些读写函数 我们可以看到每个函数都有不同针对的对象有针对字符的有针对文本行的有针对格式化的和针对二进制的我们一个一个来讲解。 4.1.1   fputc 首先是关于fputc 我们可以在官网查看一下关于fputc的信息 我们可以看到这个函数的返回类型是整形第一个参数是想要输出的字符第二个参数就是文件指针直接上代码给大家简单使用一下 int main() {//打开文件FILE* pffopen(C:\\Users\\19110\\Desktop\\test2.txt, w);if (pf NULL){perror(fopen);return 1;}//写文件fputc(a, pf);//关闭文件fclose(pf);pf NULL;return 0; } 可以看到我们在写文件的模块中使用了fputc括号中的a就是我们想要输出的字符pf就是我们想要操作的文件指针 代码运行起来 可以看到已经运行成功了 那再打开我们fopen中的文件看看有没有将a写入test文件中 我们可以看到a已经在test文件中了. 如果我们想输入一个字符串比如二十六个应为字母不妨使用while循环 int main() {FILE* pf fopen(test.txt, w);if (pf NULL){perror(fopen);return 1;}//写文件//把二十六个英文字母写入int i 0;for (i 0; i 26; i){fputc(a i, pf);}//关闭文件fclose(pf);pf NULL;return 0; } 让代码走起来 可以看到test文件里已经有我们写入的英文字母了。 注意字符的本质就是ASCII码值所以a可以和i相加。 4.1.2   fgetc 接下来是读文件操作 可以观察官方对fgetc的描述 可以看到函数的返回类型是int类型函数的参数是一个文件指针 官方的下面还有关于返回值是int类型的描述如果读取时发生了错误就会返回EOF那EOF的值是-1所以不仅仅会返回ASCII码值还有可能返回-1所以返回类型就定义为了int类型 还是上面的代码我们对其进行改造 int main() {FILE* pf fopen(test.txt, r);if (pf NULL){perror(fopen);return 1;}//读文件int ch fgetc(pf);printf(%c\n, ch); //关闭文件fclose(pf);pf NULL;return 0; } 我们将’w改成r以读的方式来操作文件这个文件放的就是我们写入的26个英文字母 让代码走起来 这里可能会有疑问为什么输出的不是aaaaaaaaa……呢 这就是关于fgetc的一个特殊效果每读取一次字符他就会向下一位移动希望大家能够理解。 4.1.3   fputs 按照惯例先观察官网的资料 函数有两个参数第一个参数是字符串第二个参数是文件返回类型是一个整形类型的数据 用代码来简单了解一下他的使用 int main() {//读文件FILE* pf fopen(text, w);if (pf NULL){perror(fopen);return 1;}//写数据fputs(hello world,pf);//关闭文件fclose(pf);pf NULL;return 0; } 代码运行起来观察 我们看到已经写入成功了  如果我们在下面再写入一次呢 运行结果 当我们再次打开这个文件检查他们有没有写入时你会发现他们出现在同一行了想让他们出现再两行也很简单只需要在后面加上\n即可 应该不难理解  4.1.4    fgets 依然先观察官方给出的描述 可以看到函数的返回类型时char*的指针类型参数 有三个下面对他的参数内容也有介绍 第一个参数意思是将第三个参数中的文件的字符串拷贝到第一个参数中 第二个参数意思就是说最多拷贝多少个字符到第一个参数中去注意\0也算字符所以要比你想拷贝的字符串多写一个数 第三个参数就是要操作的文件 继续用代码简单使用还是对我们刚刚创建好的文件进行操作 int main() {//打开文件FILE* pf fopen(text, r);if (pf NULL){perror(fopen);return 1;}//读数据char arr[20];fgets(arr, 5, pf);printf(%s\n, arr);//关闭文件fclose(pf);pf NULL;return 0; } 运行结果 可以看到在函数中想拷贝5个字符但是在输出结果中只有四个字符这个函数在最后面放上了\0 应该不难理解 4.1.5  fprintf 先在观察官方对它的描述 先是fprintf 看到这个参数可能会有人一头雾水那我们不如对比我们所学过的printf 你会发现参数就多了一个文件指针而已 那么在使用的时候我们只需要将printf中多加一个参数即可 下面是简单的代码使用 struct S {int n;float f;char arr[20]; }; int main() {struct S s {100,3.14f,zhangsan};//打开文件FILE* pf fopen(test.txt, w);if (pf NULL){perror(fopen);return 1;}//写文件fprintf(pf,%d %f %s, s.n, s.f, s.arr);//关闭文件fclose(pf);pf NULL;return 0; } 运行起来 我们会发现已经写入在了对应的文件中  4.1.6   fscanf 再对比一下我们先所学过的scanf 可以看到依然只是多了一个要操作文件的函数而已  那我们用代码对其简单实用 struct S {int n;float f;char arr[20]; }; int main() {struct S s { 0 };//打开文件FILE* pf fopen(test.txt, r);if (pf NULL){perror(fopen);return 1;}//读文件fscanf(pf,%d %f %s, (s.n), (s.f), s.arr);printf(%d %f %s, s.n, s.f, s.arr);//关闭文件fclose(pf);pf NULL;return 0; } 可以看到在最开始时我们将结构体的内容初始化为0 因为我们要用函数去读取这个文件中本身的内容也就是我们上面用fprintf所写入的文件。 我们在读取成功后再将其读到的内容打印出来 让代码跑起来 可以看到这个文件的信息已经全部被读取出来了。 以上就是本次所要分享的内容如果对你有所帮助不妨三连支持感谢您的阅读。
http://www.hkea.cn/news/14397105/

相关文章:

  • 网站备案号密码2022年楼市大爆发
  • 音乐相册制作网站广告营销留电话网站
  • 建设邮费自己的网站 要不要购买服务器的律师微网站建设
  • 网站配色模板html制作网页代码模板
  • seo站长工具推广平台网站建设活动广告
  • html5 网站 代码运城盐湖区姚孟信通网站开发中心
  • 永州网站推广东莞制作网站建设的公司
  • 制作一个网站的步骤百科网站程序
  • 浩博建设集团网站广州易网网站建设
  • 长沙有效的可以看的网站大型网站建设哪家好
  • 政务服务网站建设运行情况青州网站建设青州
  • 三五互联做的网站怎么样网页设计制作项目
  • 怎么样搭建qq号网站ui设计培训需要多少费用
  • 网站开发 报价单seo 网站
  • 网站建设论文开题报告范文做微商都去哪些网站留言
  • 网站做了301重定向域名会自动跳转吗wordpress 自动采集
  • 个人网站备案怎么样才能简单的过凡科是免费做网站吗
  • 临沂企业自助建站怎么查看网站死链
  • 个人 可以做社交网站施工企业经营情况汇报材料
  • 扬州网站建设费用建设了湛江市志愿服务网站
  • wordpress 写作工具商丘seo外包
  • 如何创建网站详细步骤做网站得叫什么
  • 郑州网站建设公司排行代客做网站
  • 上海高端网站建设网站备案的具体流程图
  • 网站建设和网络维护昆明网页设计公司排行榜
  • 优秀的定制网站建设提供商东莞网站建设 石化
  • 公司网站建设哪个最好网页制作咨询公司
  • 深圳网站建设排行怎么做盗版视频网站吗
  • 专业公司网站 南通想做代理怎么找商家
  • 网络营销的网站定位做网站后台运营这个工作怎么样