C 考试 "档案部分"(部分)
「这是我参与11月更文挑战的第9天,活动详情查看:2021最后一次更文挑战」。
feof(fp)函数用来检测文件位置指针是否已指向文件的末尾,若已指向末尾,则函数值为非零值,否则函数值为0。
本题考查点是fopen函数中文件使用方式的指定。
文件使用方式"r",表示"只读"方式打开一个字符文件。
文件使用方式"r+",表示"读写"方式打开一个字符文件。
文件使用方式"rb",表示以"只读"方式打开一个二进制文件。
文件使用方式"w",表示以"只写"方式打开一个字符文件。
C语言把文件看作是一个字符(字节)的序列,根据数据组织形式可分为ASCII文件(又称文本文件)和二进制文件,即一个C文件可以看成是一个字节流或二进制流,对于流式文件,可以进行顺序读写,也可以进行随机读写,关键在于控制文件的位置指针,由于文本文件要发生字符转换,计算位置时往往会发生混乱,访问速度受到影响,所以随机读写方式不使用于文本文件。
FILE是由系统定义的一个结构体类型,并用该类型来定义若干个FILE类型的变量,以便存放若干个文件。所以用FILE定义的变量必须是数组或指针,所以选项C中的"FILE fp;"改为"FILE *fp;"就对了。
C语言中,有两种对文件的存取方式:顺序存取和直接存取,所以选项A错误;在对文件进行读、写操作前,先要使用库函数fopen"打开"文件来实现程序中要读、写的文件与实际数据文件间的联系。在进行打开文件操作时可以指定其打开方式,如果使用"r+"方式则在写新数据时,只覆盖新数据所占的空间,其后的老数据并不丢失,所以选项B错误;在对文件进行操作后关闭文件是为了防止文件缓冲区中的剩余数据的丢失。
C语言把文件看作是一个字符的序列,即由一个一个字符的数据顺序组成。根据数据组织形式,可分为ASCII文件和二进制文件。ASCII文件又称文本文件。所以选项C的描述正确。
fp=fopen("file","w");表示用"w"方式打开文件,只能用于向该文件写数据(即输出文件),而不能用来向计算机输入。如果原来不存在该文件,则在打开时新建立一个以指定的名字命名的文件。如果原来已存在该文件,则在打开时将该文件删除,然后重新建立一个新文件。
EOF作为文件结束的标志,但是文件必须是文本文件。EOF的值为-1。
在C语言中fopen函数就可把程序中要读、写的文件与磁盘上实际的数据文件联系起来,其调用形式为:fopen(文件名,文件使用方式);若该函数调用成功,函数返回一个FILE类型的指针,赋给文件指针变量,从而与文件联系起来,当打开文件时出现错误,fopen函数将返回NULL。
对文件进行输出的库函数是fputC、fwrite、fprintf;
fread(buffer,size,count,fp);
buffer是数据块的指针,对fread来说,它就是内存块的首地址,输入的数据存入此内存块中。
fputc函数的调用形式:
fputc(ch,fp)
这里ch是待输出的某个字符,它可以是一个字符常量,也允许是一个字符变量,fp是文件指针。
文件指针实际上是指向一个结构体类型的指针,定义说明文件指针的一般形式为:
FILE *指针变量标识符
这个结构体中包含有诸如:缓冲区的地址、在缓冲区中当前存取的字符的位置、对文件是"读"还是"写"、是否出错、是否已经遇到文件结束的标志等信息;fscanf函数只能从文本文件中按格式输入,输入的对象是磁盘上文本文件的数据。
推荐阅读
-
C 考试 "档案部分"(部分)
-
[C语言必知|第3部分] 序列结构入门,这一个就够了 - 4️⃣编程示例
-
如何学习 C/C++ 编程:部分:准备
-
如何系统地学习 C(上)的基本部分
-
[C语言必知|第5部分] 选择结构入门,这一个就够了 - 1️⃣概念介绍
-
破解 ascension c10 并将其转化为下载机(第 1 部分:刷机)
-
破解 ascension c10 并将其转化为下载机(第 2 部分:获取 xterm 终端)
-
35 岁实现财务*,腾讯程序员手握2300万提前退休?-1000万房产、1000万腾讯股票、加上300万的现金,一共2300万的财产。有网友算了一笔账,假设1000万的房产用于自住,剩下1300万资产按照平均税后20-50万不等进行计算,大约花上26-60年左右的时间才能赚到这笔钱。也就是说,普通人可能奋斗一辈子,才能赚到这笔钱。在很多人还在为中年危机而惶惶不可终日的时候,有的人的35岁,就已经安全着陆,试问哪个打工人不羡慕?但问题是有这样财富积累必然有像样的实力做靠山。没有人可以不劳而获。 看到这里,肯定有人说,那么对于普通人来说,卷可能真就成了唯一的出路。但是卷也有轻松的卷,“偷懒”的卷法,对于程序员而言,刨除掉一时无法改掉的开会传统占用的大部分时间,如何把有限的时间和精力放在真正重要的架构设计、需求设计上,而不是重复的造*,编码、改bug、手动测试。因此在科技改变生活的今天,学会使用AI工具成为程序员们的必备技能。 以全栈式全自动的软件开发工具飞算SoFlu软件机器人为例,作为全球首款面向微服务架构设计和最佳实践的软件机器人,SoFlu软件机器人改变了原来手工编码的作业模式,通过可视化拖拽方式以及参数配置就能实现等同于编写复杂代码的业务逻辑,在设计业务逻辑时就完成了微服务应用开发,做到“业务即图,图即代码”,实现“软件开发,十倍提效”。 而作为飞算SoFlu软件机器人的一个重要组成部分,FuncGPT(慧函数)支持所有类型函数创建。通过自然语言描述Java函数需求,实时生成高质量、高可读性的Java函数代码。生成代码可直接复制到IDEA,或一键导入Java全自动开发工具函数库。 FuncGPT(慧函数)具有五大核心能力: ● 自然语言:通过自然语言即可生成函数,降低软件开发门槛。 ● 秒级函数开发:全自动秒级开发函数,秒级完成,效率千倍提升。 ● 一站式函数开发应用:函数生成即可直接应用,效率、安全有保障。 ● 质量可靠:生成的函数代码符合业界规范、具备良好的可读性,符合最优解。 ● 灵活生成:可以根据开发人员的具体需求生成并支持调整和修改。 以“将文件流转换为File对象”这个需求为例,以下是FuncGPT(慧函数)秒级生成的代码: / 类名:FileConverter // 函数名:convertStreamToFile // 函数功能:将文件流转换为File对象 // POM依赖包:无 import java.io.File; import java.io.FileOutputStream; import java.io.IOException; import java.io.InputStream; public class FileConverter { /** * 将文件流转换为File对象 * @param inputStream 文件流 * @param filePath 文件路径 * @param fileName 文件名 * @return 转换后的File对象 * @throws IOException 如果发生I/O异常 */ public static File convertStreamToFile(InputStream inputStream, String filePath, String fileName) throws IOException { File file = new File(filePath + File.separator + fileName); // 创建File对象 try (FileOutputStream outputStream = new FileOutputStream(file)) { // 创建文件输出流 byte buffer = new byte[1024]; int bytesRead; while ((bytesRead = inputStream.read(buffer)) != -1) { // 从文件流读取数据并写入文件 outputStream.write(buffer, 0, bytesRead); } } return file; // 返回转换后的File对象 } } // 函数示例 // 将文件流转换为File对象示例 // 入参:inputStream,文件流 // 入参:filePath,文件路径 // 入参:fileName,文件名 // 出参:file,转换后的File对象 // 调用示例: // InputStream inputStream = new FileInputStream("example.txt"); // String filePath = "C:\\Users\\User\\Documents"; // String fileName = "example.txt"; // File file = FileConverter.convertStreamToFile(inputStream, filePath, fileName); // System.out.println(file.getAbsolutePath); // 输出结果:例如,将文件流转换为File对象后,文件的绝对路径为:C:\Users\User\Documents\example.txt // 则输出结果为:C:\Users\User\Documents\example.txt 通过分析,不难发现以上代码:
-
微信 "扫一扫 "物联网,全面揭秘 "扫一扫 "背后的扫盲技术!-1.1 扫一扫感知物体是做什么的? 1.1 微信扫一扫是做什么的? 扫一扫识物是指以图片或视频(商品图片:鞋/包/美妆/服饰/家电/玩具/图书/食品/珠宝/家具/其他商品)为输入媒介,挖掘微信内容生态中的有价值信息(电商+百科+资讯,如图1所示),并展示给用户。这里的电商基本涵盖了微信小程序覆盖上亿SKU的全量优质电商,可以支持用户货比N家并直接下单购买,百科和资讯则聚合了微信内的头部自媒体如搜狗、搜搜、百度等,向用户展示和分享拍摄商品相关的内容资讯。 图 1 扫一扫识别功能示意图 欢迎大家更新iOS新版微信→扫一扫→识货,亲自体验,也欢迎大家通过识货界面的反馈按钮向我们提交反馈意见。 扫一扫识物实景图展示 1.2 扫一扫识物有哪些使用场景? 扫一扫识物的目的是为用户访问微信内部生态内容开辟一个新窗口,以用户扫图片为输入形式,为用户提供微信生态内容中的百科、资讯、电商等作为展示页面。除了用户熟悉的扫一扫操作外,我们还将进一步拓展长按操作,让用户更方便地进行扫一扫操作。"扫一扫知事 "的落地场景主要涵盖三大部分: a. 科普知识: a.科普知识。用户通过扫一扫,可以在微信生态圈中获取该对象的百科、资讯等常识或趣闻,帮助用户更好地了解该对象; b.购物场景。同样的搜索功能支持用户看到喜欢的商品立即检索到微信小程序电商中的同款商品,支持用户即扫即购; c.广告场景。扫一扫识别物体可以辅助公众号文章、视频更好地理解其中蕴含的图片信息,从而更好地投放匹配广告,提高点击率。 1.3 Sweep Sense 为 Sweep 家族带来了哪些新技术? 对于扫一扫来说,大家耳熟能详的应该就是扫一扫二维码、扫一扫小程序码、扫一扫条形码、扫一扫翻译了。无论是各种形式的编码还是文字字符,都可以看作是图片的一种特定编码形式,而物的识别则是对自然场景图片的识别,这对于扫一扫家族来说是一个质的飞跃,我们希望从物的识别入手,进一步拓展扫一扫对自然场景图片的理解能力,比如扫酒、扫车、扫植物、扫人脸等服务,如下图3所示。 图 3 Sweep 家族
-
NX 二次开发--C++ 使用 IDA Pro 反编译 dll,查看内部使用的 API 函数(第 1 部分)