作业信息
这个作业属于哪个课程 | 2023-2024-1-计算机基础与程序设计 |
---|---|
这个作业要求在哪里 | 2023-2024-1计算机基础与程序设计第十四周作业 |
这个作业的目标 | 自学教材《C语言程序设计》第13章并完成云班课测试。 |
作业正文 | 2023-2024-1 学号20231318《计算机基础与程序设计》第十四周学习总结 |
教材学习内容总结
《C语言程序设计》第十三章:
主要介绍了
- 二进制文件和文本文件
- 文件的打开和关闭:fopen(),fclose(),fseek(),feof()
- 按字符、格式、数据块读写文件:fgetc(),fputc(),fgets(),fputs(),fscanf(),fprintf(),fread(),fwrite()
- 文件的随机读写:rewind(),ftell(),fflush()
- 标准输入/输出重定向
教材学习中的问题和解决过程
问题:与C语言这个流式文件相对应的是什么文件呢?
解决过程:通过询问AI,得到了答案。
流式文件(stream-oriented file)是指以流(stream)为基础的文件处理方式,其中数据被视为一个连续的流而不是离散的块。这样的文件处理方式使得输入和输出可以通过类似流水线的方式进行,而不需要考虑文件中数据的物理结构。
相对于流式文件的另一种文件处理方式是“随机存取文件”或“直接访问文件”(random access file)。在这种文件处理方式中,文件中的数据被看作是由一个个固定大小的记录组成,每个记录都有一个唯一的位置(偏移量),可以通过该位置直接访问和修改记录。
流式文件 vs. 随机存取文件
流式文件:
数据被视为一个连续的流,没有明确定义的记录结构。
顺序读取和写入是主要的操作方式。
通过fread和fwrite等函数进行操作。
随机存取文件:
数据被分割为固定大小的记录,每个记录有唯一的位置。
可以直接跳转到文件的任意位置进行读取和写入,支持随机访问。
通过fseek、ftell和fread等函数进行操作。
问题:除了字节流外还有什么流,跟字节流有什么区别?
解决过程:通过询问AI得到了答案。
在计算机编程中,流(stream)是数据传输的一种抽象概念,它可以是字节流(byte stream)或字符流(character stream)。这两者之间的主要区别在于数据的处理单位和处理方式。
- 字节流(Byte Stream):
处理单位: 字节流是以字节为单位进行数据传输的。
用途: 适用于二进制数据,如图像、音频、视频文件等。在字节流中,不对数据进行解释或翻译,而是将数据视为字节序列。
典型应用: InputStream 和 OutputStream 是字节流的典型接口,用于处理字节数据的输入和输出。
示例: 读取和写入文件时常使用字节流。例如,FileInputStream 和 FileOutputStream 用于以字节为单位读取和写入文件。
- 字符流(Character Stream):
处理单位: 字符流是以字符为单位进行数据传输的。
用途: 适用于文本数据,字符流会考虑字符的编码和解码,可以更好地处理文本文件中的字符集。
典型应用: Reader 和 Writer 是字符流的典型接口,用于处理字符数据的输入和输出。
示例: 使用字符流可以更方便地处理文本文件。例如,FileReader 和 FileWriter 用于以字符为单位读取和写入文件。
区别和选择:
处理方式: 字节流以字节为单位,不关心数据的具体内容,适用于处理二进制数据。字符流以字符为单位,考虑字符的编码和解码,适用于处理文本数据。
用途: 字节流更适合处理图像、音频、视频等二进制数据。字符流更适合处理文本文件,因为它们可以正确处理字符编码和换行符。
接口: 在Java中,字节流的接口是 InputStream 和 OutputStream,而字符流的接口是 Reader 和 Writer。
在选择流的类型时,取决于你要处理的数据类型。如果是处理二进制数据,选择字节流;如果是处理文本数据,选择字符流。在实际应用中,有时也会使用缓冲流(Buffered Stream),它们可以提高读写的效率。
基于AI的学习
学习进度条
代码行数(新增/累积) | 博客量(新增/累积) | 学习时间(新增/累积) | 重要成长 | |
---|---|---|---|---|
目标 | 5000行 | 10篇 | 300小时 | |
第一周 | 200/200 | 1/1 | 28/28 | 学会了markdown语法 |
第二周 | 100/300 | 1/2 | 10/38 | 学会了使用chatgpt |
第三周 | 150/450 | 1/3 | 15/53 | 学习运用c语言编写简单程序 |
第四周 | 150/600 | 1/4 | 20/73 | 学习运用C语言输出数学计算程序,熟悉门电路知识 |
第五周 | 120/720 | 1/5 | 13/86 | 学习运用基本的机器语言、汇编语言和伪代码 |
第六周 | 180/900 | 1/6 | 20/106 | 学习综合运用分支结构与循环结构 |
第七周 | 200/1100 | 1/7 | 14/120 | 学习运用跳转结构与调用函数 |
第八周 | 300/1400 | 1/8 | 13/133 | 学习运用一维和二维数组以及基本的指针用法 |
第九周 | 250/1650 | 1/9 | 18/151 | 学会了函数指针、指针与数组以及动态内存分配 |
第十周 | 350/2000 | 1/10 | 19/171 | 学习了字符串的运用,初步了解了结构体 |
第十一周 | 500/2500 | 1/11 | 19/190 | 学习了结构体与共用体,以及链表这一动态数据结构的运用 |
第十二周 | 1000/3500 | 1/12 | 20/210 | 学习了文件的概念和运用 |
第十三周 | 1000/4500 | 1/13 | 18/228 | 复习了C语言输出数学计算程序;还复习了指针、结构体和字符串 |
第十四周 | 500/5000 | 1/14 | 22/250 | 复习了C语言数组、函数和文件 |
预计学习时间:22小时 | ||||
实际学习时间:22小时 |