2023-2024-1 20231306 《计算机基础与程序设计》第十四周学习总结

发布时间 2023-12-31 20:23:09作者: 20231306周玟妍

作业信息

这个作业属于哪个课程 2023-2024-1-计算机基础与程序设计
这个作业要求在哪里 2023-2024-1计算机基础与程序设计第十四周作业
这个作业的目标 参考本周学习资源、自学教材《C语言程序设计》第13章并完成云班课测试
作业正文

教材学习内容总结

《C语言程序设计》——第13章 文件操作:

  1. 二进制文件和文本文件
  • 二进制文件:
    以二进制形式存储数据,即使用0和1的组合。 包含任意数据,包括图像、音频、视频、可执行代码等。 通常不可读,因为数据以机器可执行的形式存储。由计算机硬件直接处理,不需要解释器或编译器。可执行程序、图像文件(JPEG、PNG)、音频文件(MP3)、视频文件(MP4)等都属于二进制文件。

  • 文本文件:
    以字符的形式存储数据,使用字符编码(例如ASCII、UTF-8)。包含文本信息,如文档、配置文件、源代码等。通常是可读的,但需要解释器或编译器来处理,因为数据需要被解释为文本。文本文件(TXT)、源代码文件(C、Java)、配置文件(INI、XML)、网页文件(HTML)等都属于文本文件。

  • 比较:
    二进制文件适用于存储任意类型的数据,但通常不易读取。文本文件适用于存储文本信息,易于读取和编辑。在二进制文件中,数据的格式通常由程序来解释。文本文件通常可以由文本编辑器直接编辑。当存储文本信息时,选择文本文件更为合适。当存储图像或音频等二进制数据时,选择二进制文件更为恰当。

  • 文本文件中的每一个数字都单独占用一个字节的存储空间。而二进制文件则是把整个数字作为一个二进制数来存储的,并非数值的每一位数字都占用单独的存储空间。

  1. 文件的打开和关闭
  • 代码示例:

include <stdio.h>

int main() {
// 文件指针
FILE *file;

// 打开文件(写入模式,如果不存在则创建,如果存在则截断为空)
file = fopen("example.txt", "w");

//检查文件是否成功打开
if (file == NULL) {
printf("无法打开文件\n");
return 1;
}

// 关闭文件
fclose(file);

return 0;
}

  • 解释:
    "r": 只读方式打开文件。
    "w": 只写方式打开文件,如果文件存在则截断为零长度,如果文件不存在则创建。
    "a": 追加写方式打开文件,如果文件不存在则创建。
    "r+": 读写方式打开文件。
    "w+": 读写方式打开文件,如果文件存在则截断为零长度,如果文件不存在则创建。
    "a+": 读写方式打开文件,如果文件不存在则创建,写入的数据追加到文件末尾。

  • 按字符读写文件

  1. 函数fgetc()用于从一个以只读或读写方式打开的文件上读字符。
  2. 函数fputc()用于将一个字符写到一个文件上。
  3. 函数feof()用于检查是否到达文件末尾,当文件位置指针指向文件结束符时,返回非0值,否则返回0值。

代码示例:

include <stdio.h>

int main() {
FILE *file;
char ch;

// 打开文件(读取模式)
file = fopen("example.txt", "r");

if (file == NULL) {
printf("无法打开文件\n");
return 1;
}

// 读取文件内容
while (!feof(file)) {
ch = fgetc(file);

// 检查是否到达文件末尾
if (!feof(file)) {
printf("%c", ch);
}
}

// 关闭文件
fclose(file);

return 0;
}
需要注意的是,虽然 feof 可以用于检查文件是否到达末尾,但在很多情况下,更常见的是使用其他文件读取函数(如 fread、fgets、fscanf)的返回值来判断是否已经到达文件末尾。 feof 的主要用途之一是在使用 feof 和其他文件读取函数的组合时,确保正确地处理文件读取的边界条件。

  • 按格式读写文件
  1. fprintf(file, "%s %d %f\n", "Hello", 123, 3.14); 将字符串、整数和浮点数按照指定的格式写入文件。
  2. fscanf(file, "%s %d %f", str, &num, &decimal); 从文件中按照指定的格式读取字符串、整数和浮点数。
  3. fwrite()
    fwrite 用于将数据块从内存写入文件。它返回实际写入的数据块数量。
    代码示例:

//向文件写入整数数组
int numbers[] = {1, 2, 3, 4, 5};
FILE *file = fopen("data.bin", "wb");
fwrite(numbers, sizeof(int), 5, file);
fclose(file);
4. fread()
fread 用于从文件读取数据块到内存。它返回实际读取的数据块数量。
代码示例:

//向文件写入整数和字符串
FILE *file = fopen("output.txt", "w");
fprintf(file, "Integer: %d, String: %s\n", 42, "Hello");
fclose(file);

基于AI的学习

代码调试中的问题和解决过程

学习进度条

代码行数(新增/累积) 博客量(新增/累积) 学习时间(新增/累积) 重要成长
目标 5000行 30篇 400小时
第一周 200/200 2/2 20/20
------- -------- -----
第二周 200/400 2/4
第三周 200/600 3/7
第四周 100/700 2/9
第五周 200/900 1/ 10
第六周 300/1200 1/11
第七周 400/1600 1/12
第八周 500/2100 1/13
第九周 500/2600 3/16
第十周 400/3000 1/17
第十一周 400/3400 1/18
第十二周 400/3800 2/20
第十三周 400/4200 6/26
第十四周 400/4600 1/27