徐州集团网站建设报价网站所属权

张小明 2025/12/30 14:20:59
徐州集团网站建设报价,网站所属权,广州制作外贸网站,哪里网站开发小程序目录 1. 为什么使⽤⽂件#xff1f; 2. 什么是⽂件#xff1f; 2.1 程序⽂件 2.2 数据⽂件 2.3 ⽂件名 3. ⼆进制⽂件和⽂本⽂件 4. ⽂件的打开和关闭 4.1 流和标准流 4.1.1 流 4.1.2 标准流 4.2 ⽂件指针 4.3 ⽂件的打开和关闭 5. 文件的顺序读写 5.1 顺序读写…目录1. 为什么使⽤⽂件2. 什么是⽂件2.1 程序⽂件2.2 数据⽂件2.3 ⽂件名3. ⼆进制⽂件和⽂本⽂件4. ⽂件的打开和关闭4.1 流和标准流4.1.1 流4.1.2 标准流4.2 ⽂件指针4.3 ⽂件的打开和关闭5. 文件的顺序读写5.1 顺序读写函数介绍5.2 对⽐⼀组函数fprintf函数的使用sscanf函数的使用6. ⽂件的随机读写6.1 fseek6.2 ftell6.3 rewind7. ⽂件读取结束的判定7.1 被错误使⽤的 feof8. ⽂件缓冲区1. 为什么使⽤⽂件如果没有⽂件我们写的程序的数据是存储在电脑的内存中如果程序退出内存回收数据就丢失 了等再次运⾏程序是看不到上次程序的数据的如果要将数据进⾏持久化的保存我们可以使⽤ ⽂件2. 什么是⽂件磁盘硬盘上的⽂件是⽂件。但是在程序设计中我们⼀般谈的⽂件有两种程序⽂件、数据⽂件从⽂件功能的⻆度来分类 的2.1 程序⽂件程序⽂件包括源程序⽂件后缀为.c,⽬标⽂件windows环境后缀为.obj,可执⾏程序windows 环境后缀为.exe2.2 数据⽂件⽂件的内容不⼀定是程序⽽是程序运⾏时读写的数据⽐如程序运⾏需要从中读取数据的⽂件或 者输出内容的⽂件本章讨论的是数据⽂件在以前各章所处理数据的输⼊输出都是以终端为对象的即从终端的键盘输⼊数据运⾏结果显⽰到 显⽰器上其实有时候我们会把信息输出到磁盘上当需要的时候再从磁盘上把数据读取到内存中使⽤这⾥处 理的就是磁盘上⽂件。2.3 ⽂件名⼀个⽂件要有⼀个唯⼀的⽂件标识以便⽤⼾识别和引⽤。⽂件名包含3部分⽂件路径⽂件名主⼲⽂件后缀例如c:\code\test.txt为了⽅便起⻅⽂件标识常被称为⽂件名3. ⼆进制⽂件和⽂本⽂件根据数据的组织形式数据⽂件被称为⽂本⽂件和⼆进制⽂件。数据在内存中以⼆进制的形式存储如果不加转换的输出到外存的⽂件中就是⼆进制⽂件。如果要求在外存上以ASCII码的形式存储则需要在存储前转换。以ASCII字符的形式存储的⽂件就是文本⽂件⼀个数据在⽂件中是怎么存储的呢字符⼀律以ASCII形式存储数值型数据既可以⽤ASCII形式存储也可以使⽤⼆进制形式存储。如有整数10000以ASCII码的形式输出到磁盘则磁盘中占⽤5个字节每个字符⼀个字节⽽ ⼆进制形式输出则在磁盘上只占4个字节。测试代码#includestdio.h int main() { int a 10000; FILE* pf fopen(project.txt, w); // 文本写入模式 fprintf(pf, %d, a); // 以文本形式写入数字 fclose(pf); return 0; }最终的结果以上的文本是自动生成好的而我是使用写的方式打开那个文件所以里面会生成一个100004. ⽂件的打开和关闭4.1 流和标准流4.1.1 流我们程序的数据需要输出到各种外部设备也需要从外部设备获取数据不同的外部设备的输⼊输出 操作各不相同为了⽅便程序员对各种设备进⾏⽅便的操作我们抽象出了流的概念我们可以把流想象成流淌着字符的河C程序针对⽂件、画⾯、键盘等的数据输⼊输出操作都是通过流操作的。⼀般情况下我们要想向流⾥写数据或者从流中读取数据都是要打开流然后操作。4.1.2 标准流那为什么我们从键盘输⼊数据向屏幕上输出数据并没有打开流呢那是因为C语⾔程序在启动的时候默认打开了3个流• stdin-标准输⼊流在⼤多数的环境中从键盘输⼊scanf函数就是从标准输⼊流中读取数据。• stdout-标准输出流⼤多数的环境中输出⾄显⽰器界⾯printf函数就是将信息输出到标准输出 流中。• stderr-标准错误流⼤多数环境中输出到显⽰器界⾯。这是默认打开了这三个流我们使⽤scanf、printf等函数就可以直接进⾏输⼊输出操作的。stdin、stdout、stderr 三个流的类型是FILE *通常称为⽂件指针。C语⾔中就是通过FILE *的⽂件指针来维护流的各种操作的4.2 ⽂件指针缓冲⽂件系统中关键的概念是“⽂件类型指针”简称“⽂件指针”。每个被使⽤的⽂件都在内存中开辟了⼀个相应的⽂件信息区⽤来存放⽂件的相关信息如⽂件的名字⽂件状态及⽂件当前的位置等。这些信息是保存在⼀个结构体变量中的。该结构体类型是由系统声明的取名FILE例如VS2013编译环境提供的stdio.h头⽂件中有以下的⽂件类型申明:struct _iobuf { char *_ptr; int _cnt; char *_base; int _flag; int _file; int _charbuf; int _bufsiz; char *_tmpfname; }; typedef struct _iobuf FILE;不同的C编译器的FILE类型包含的内容不完全相同但是⼤同⼩异。每当打开⼀个⽂件的时候系统会根据⽂件的情况⾃动创建⼀个FILE结构的变量并填充其中的信 息使⽤者不必关⼼细节⼀般都是通过⼀个FILE的指针来维护这个FILE结构的变量这样使⽤起来更加⽅便。下⾯我们可以创建⼀个FILE*的指针变量:FILE* pf;//⽂件指针变量定义pf是⼀个指向FILE类型数据的指针变量。可以使pf指向某个⽂件的⽂件信息区是⼀个结构体变 量。通过该⽂件信息区中的信息就能够访问该⽂件。也就是说通过⽂件指针变量能够间接找到与它关联的⽂件。⽐如:4.3 ⽂件的打开和关闭⽂件在读写之前应该先打开⽂件在使⽤结束之后应该关闭⽂件。在编写程序的时候在打开⽂件的同时都会返回⼀个FILE*的指针变量指向该⽂件也相当于建⽴了 指针和⽂件的关系ANSIC规定使⽤fopen函数来打开⽂件fclose来关闭⽂件。函数原型如下// 打开⽂件 FILE * fopen ( const char * filename, const char * mode ); // 关闭⽂件 int fclose ( FILE * stream );mode表⽰⽂件的打开模式下⾯都是⽂件的打开模式实例代码在没有text.txt文件进行运行代码的时候会出先找不到这几个英文字因为我们是以r 读的形式进行打开文件的上面的代码是以w 写的形式所以会自动帮我们生成一个相对应的文件这里就不行了所以我们在使用r 等读的形式进行打开文件的时候必须有一个对应的文本提供给我们去打开int main() { //打开文件 FILE* pf fopen(text.txt, r); if (pf NULL) { perror(pf); return 1; } //关闭文件 fclose(pf); pf NULL; return 0; }输出结果此时我们创建一个可以给我们打开的文件输出结果如下此时我们的代码没有了之前出现的那几行英文字母说明我们这的读的形式打开文件是成功的5. 文件的顺序读写5.1 顺序读写函数介绍上⾯说的适⽤于所有输⼊流⼀般指适⽤于标准输⼊流和其他输⼊流如⽂件输⼊流所有输出流⼀般指适⽤于标准输出流和其他输出流如⽂件输出流这里我们就先介绍几个fputc的使用函数原型int fputc ( int character, FILE * stream );代码演示int main() { //打开文件 FILE* pf fopen(text.txt, w); if (pf NULL) { perror(fopen); return 1; } //写文件 fputc(a, pf); fputc(b, pf); fputc(m, pf); fputc(z, pf); //关闭文件 fclose(pf); pf NULL; return 0; }输出结果fgetc的使用函数原型int fgetc ( FILE * stream );代码演示fgetc的使用 int main() { //打开文件 FILE* pf fopen(project.txt, r); if (pf NULL) { perror(fopen); return 1; } //读文件 int ch 0; while ((ch fgetc(pf)) ! EOF) { printf(%c, ch); } //关闭文件 fclose(pf); pf NULL; return 0; }5.2 对⽐⼀组函数scanf / fscanf / sscanfprintf / fprintf / sprintffprintf函数的使用函数原型int fprintf ( FILE * stream, const char * format, ... );代码演示struct S { char name[20]; int age; float score; }; int main() { struct S s { 小龙,19,60 }; FILE* pf fopen(project.txt, w); if (pf NULL) { perror(fopen); return 1; } //写文件 fprintf(pf,%s %d %f, s.name, s.age, s.score); //关闭文件 fclose(pf); pf NULL; return 0; }输出结果sscanf函数的使用函数原型:int sscanf ( const char * s, const char * format, ...);代码演示struct S { char name[20]; int age; float score; }; int main() { char buf[200] { 0 }; struct S s { 小龙,19,60.5f }; sprintf(buf ,%s %d %f, s.name, s.age, s.score); printf(1.以字符串的形式%s\n, buf); struct S t { 0 }; sscanf(buf ,%s %d %f , t.name, (t.age), (t.score)); printf(2.按照格式来打印:%s %d %f\n,t.name,t.age,t.score); return 0; }输出结果6. ⽂件的随机读写6.1 fseek根据⽂件指针的位置和偏移量来定位⽂件指针⽂件内容的光标函数原型int fseek ( FILE * stream, long int offset, int origin )代码演示int main() { FILE* pf fopen(project.txt, r); if (pf NULL) { perror(fopen); return 1; } printf(文件内容abcdefghi\n\n); printf(三种情况演示\n); // 情况1SEEK_CUR从当前位置偏移 fseek(pf, 0, SEEK_SET); // 回到开头 fseek(pf, 3, SEEK_CUR); // 从位置0移动3位 int ch fgetc(pf); printf(1. fseek(pf, 3, SEEK_CUR): %c\n, ch); // d位置3 // 情况2SEEK_SET从文件开头 fseek(pf, 6, SEEK_SET); // 直接到位置6 ch fgetc(pf); printf(2. fseek(pf, 6, SEEK_SET): %c\n, ch); // g位置6 // 情况3SEEK_END从文件末尾 fseek(pf, -3, SEEK_END); // 从末尾往前3位 ch fgetc(pf); printf(3. fseek(pf, -3, SEEK_END): %c\n, ch); // g位置6 fclose(pf); return 0; }输出结果6.2 ftell返回⽂件指针相对于起始位置的偏移量函数原型long int ftell ( FILE * stream );代码演示int main() { FILE* pf fopen(project.txt, r); if (pf NULL) { perror(fopen); return 0; } //读文件 int ch fgetc(pf); printf(%c\n, ch); //此时只输出一个a fseek(pf, 0, SEEK_END); printf(%d\n, ftell(pf)); //找出的偏移量是9 //关闭文件 fclose(pf); pf NULL; return 0; }输出结果✅ 总结这个代码演示了fgetc()读取一个字符fseek(pf, 0, SEEK_END)移动到文件末尾ftell(pf)获取当前位置即文件大小6.3 rewind让⽂件指针的位置回到⽂件的起始位置函数原型void rewind ( FILE * stream );代码演示int main() { FILE* pf fopen(project.txt, r); if (pf NULL) { perror(fopen); return 1; } //读文件 //第一次 int ch fgetc(pf); printf(%c\n, ch); //此时只输出一个a fseek(pf, -4, SEEK_END); //第二次 ch fgetc(pf); printf(%c\n, ch); // 输出f rewind(pf); // 等价于 fseek(pf, 0, SEEK_SET)回到位置0 //第三次 ch fgetc(pf); printf(%c\n, ch); //输出a //关闭文件 fclose(pf); pf NULL; return 0; }输出结果代码解析第一次位置0字符 a fseek后位置5 第二次位置5字符 f rewind后位置0 第三次位置0字符 a7. ⽂件读取结束的判定7.1 被错误使⽤的 feof牢记在⽂件读取过程中不能⽤feof 函数的返回值直接来判断⽂件的是否结束feof 的作⽤是当⽂件读取结束的时候判断读取结束的原因是否是遇到⽂件尾结束。1. ⽂本⽂件读取是否结束判断返回值是否为EOF fgetc 或者 NULL fgets例如fgetc 判断是否为 EOFfgets 判断返回值是否为 NULL2. ⼆进制⽂件的读取结束判断判断返回值是否⼩于实际要读的个数。例如fread判断返回值是否⼩于实际要读的个数⽂本⽂件的例⼦int main() { FILE* pf fopen(project.txt, r); if (pf NULL) { perror(fopen); return 1; } //读文件 int ch 0; while ((ch fgetc(pf)) ! EOF) { printf(%c\n,ch); } //判断是什么原因导致的文件读取结束的 if (feof(pf)) { printf(遇到文件末尾。读取文件正常); } else if(ferror(pf)) { perror(fgetc); } //关闭文件 fclose(pf); pfNULL; return 0; }输出结果代码解析循环读取文件内容//读文件 int ch 0; while ((ch fgetc(pf)) ! EOF) { printf(%c\n, ch); }执行过程int ch 0定义整型变量ch用int而不是char是为了存储EOFwhile ((ch fgetc(pf)) ! EOF)fgetc(pf)每次读取一个字符EOF文件结束标志值为 -1读取成功 → 执行循环体读取到文件尾 → 退出循环知识点fgetc()每次读取一个字符文件指针自动后移EOFEnd Of File#define EOF (-1)为什么用int而不是charchar可能无法存储-1某些系统中char是无符号的判断读取结束原因//判断是什么原因导致的文件读取结束的 if (feof(pf)) { printf(遇到文件末尾。读取文件正常); } else if(ferror(pf)) { perror(/fgetc); }执行过程feof(pf)检查是否到达文件末尾如果是因为正常读到文件尾而结束返回非零值ferror(pf)检查是否发生读取错误如果是因为错误如磁盘故障而结束返回非零值知识点feof()检查文件结束标志是否被设置ferror()检查文件错误标志是否被设置8. ⽂件缓冲区ANSI C标准采⽤“缓冲⽂件系统”处理数据⽂件的所谓缓冲⽂件系统是指系统⾃动地在内存中为程 序中每⼀个正在使⽤的⽂件开辟⼀块“⽂件缓冲区”。从内存向磁盘输出数据会先送到内存中的缓冲 区装满缓冲区后才⼀起送到磁盘上。如果从磁盘向计算机读⼊数据则从磁盘⽂件中读取数据输⼊ 到内存缓冲区充满缓冲区然后再从缓冲区逐个地将数据送到程序数据区程序变量等。缓冲 区的⼤⼩根据C编译系统决定的。这⾥可以得出⼀个结论 因为有缓冲区的存在C语⾔在操作⽂件的时候需要做刷新缓冲区或者在⽂件操作结束的时候关闭⽂件以上就是我们的全部内容了
版权声明:本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!

泉州北京网站建设价格入侵网站做排名

四目相机测量系统 matlab全套仿真程序与精度分析模块。 包括相机设置,参数定义,观测数据生成,全天星图生成,星点成像,星图识别,点阵目标匹配,仿真成像,畸变添加,噪声添加…

张小明 2025/12/30 14:20:27 网站建设

岳阳市网站建设上海网站建设 迈若

一文盘点10个企业级Agentic AI架构,企业级智能体部署指南,附架构详解AI Agent落地卡壳?10大权威企业级Agentic AI架构,破解6大核心难题系统不兼容、合规难落地、价值难量化?这10个企业级Agentic架构给足解决方案2026必…

张小明 2025/12/30 14:19:51 网站建设

建设部网站监督平台如何创建网站名称

想象一下:你的论文不再是一堆孤零零的文字,而是一个会思考、会分析、会表达的“活体”——它能自己梳理文献脉络,绘制专业图表,跑回归模型,设计问卷并分析结果,甚至在查重前主动优化语言、规避AI痕迹。这不…

张小明 2025/12/30 14:19:15 网站建设

微信小程序怎么发布上线广东网络seo推广平台

快速体验 打开 InsCode(快马)平台 https://www.inscode.net输入框内输入如下内容: 创建一个详细的Nexus3私有Maven仓库搭建指南应用,包含以下内容:1) Nexus3安装部署步骤(Docker和原生安装两种方式);2) 仓库类型配置详解(hosted/…

张小明 2025/12/30 14:18:36 网站建设

网站默认极速模式中国前十强集团

火山引擎AI大模型SDK连接Qwen3-VL-30B进行混合推理 在智能应用日益复杂的今天,用户不再满足于“看图识字”式的浅层交互。他们期望系统能真正理解一张财报中的趋势变化、一张医学影像里的病灶演化,甚至一段教学视频中图文并茂的逻辑推导。这种对深层语义…

张小明 2025/12/30 14:18:02 网站建设

做网站镜像步骤山东省建设执业师网站

ncmdumpGUI是一款专为Windows平台设计的开源工具,能够将网易云音乐下载的NCM加密格式转换为通用的MP3、FLAC等音频格式。这款工具让用户能够更便捷地管理自己获取的音乐内容,实现跨设备自由播放的便利体验。 【免费下载链接】ncmdumpGUI C#版本网易云音乐…

张小明 2025/12/30 14:17:27 网站建设