2023-2024-1 学号20231315第十四周学习总结

发布时间 2023-12-31 14:09:50作者: 向思源

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

作业信息

这个作业属于哪个课程 2023-2024-1 《计算机基础与程序设计》
这个作业要求在哪里 2023-2024-1 《计算机基础与程序设计》
这个作业的目标 学习《C语言程序设计》第13章
作业正文 https://i.cnblogs.com/posts/edit;postId=17937467

教材学习内容总结

本周我自学了《C语言程序设计》第13章的相关内容,对教材进行了总结。

《C语言程序设计》第13章总结

第13章主要介绍了文件的打开关闭,顺序读写与随机读写,标准输入输出等

教材学习中遇到的问题

《C语言程序设计》第13章

  1. 文本文件和二进制文件的区别?

文本文件:文本文件是以纯文本形式存储的文件,其中包含的数据以字符编码(如ASCII或Unicode)表示。文本文件通常包含可读的文本内容,例如普通的文本文档、代码文件、配置文件等。它们可以被文本编辑器打开和编辑,使人们能够轻松阅读和修改其中的文本内容。

二进制文件:二进制文件是以二进制形式存储的文件,其中的数据以字节编码表示。二进制文件可以包含各种类型的数据,例如图像、音频、视频、可执行程序等。与文本文件不同,二进制文件并不以可读的文本形式呈现,而是通过特定的应用程序或工具进行解析和处理。

主要区别如下:

存储方式:文本文件使用字符编码表示数据,而二进制文件使用字节编码表示数据。

可读性:文本文件可以被人类直接读取和理解,而二进制文件通常需要特定的应用程序或工具进行解析和处理才能获取有意义的信息。

文件大小:由于文本文件使用字符编码,相对于二进制文件,同样的数据在文本文件中可能会占用更多的存储空间。

编辑方式:文本文件可以使用文本编辑器进行直接编辑,而二进制文件通常需要使用特定的编辑器或开发工具。

  • fopen的用法?

    fopen() 是一个用于打开文件的 C 语言库函数,它用于在程序中创建或打开一个文件,并返回一个指向该文件的指针。以下是 fopen() 函数的一般用法:FILE *fopen(const char *filename, const char *mode);

    • filename:要打开的文件名(包括路径),可以是一个字符串常量或字符数组。

    • mode:打开文件的模式,以字符串形式表示。常见的模式包括:

      • "r":只读模式,打开一个已存在的文本文件。
      • "w":写入模式,若文件存在则将其内容清空,若文件不存在则创建一个新文件。
      • "a":追加模式,若文件存在则在文件末尾追加内容,若文件不存在则创建一个新文件。
      • "rb""wb""ab":以二进制格式打开文件,与上述相同,只是处理的是二进制数据。
    • 返回值:成功打开文件时,返回一个指向 FILE 结构的指针;打开失败时,返回 NULL

    以下是一个简单的示例,展示了如何使用 fopen() 函数来打开一个文本文件并写入数据:

    #include <stdio.h>

    int main() {
    FILE *file = fopen("example.txt", "w"); // 打开一个名为 example.txt 的文件,以写入模式
    if (file == NULL) {
    printf("无法打开文件\n");
    return 1;
    }

    fprintf(file, "Hello, World!"); // 向文件写入数据

    fclose(file); // 关闭文件

    return 0;
    }

    在上述示例中,程序尝试以写入模式打开一个名为 "example.txt" 的文件。如果文件打开成功,则使用 fprintf() 函数将字符串 "Hello, World!" 写入文件中。最后,使用 fclose() 函数关闭文件。

    需要注意的是,在使用 fopen() 打开文件后,必须使用 fclose() 关闭文件,以确保文件资源被正确释放。

  • 如何随机读写文件?

    要实现随机读写文件,可以使用 C 语言中的 fseek()fwrite() 函数进行定位和写入操作。下面是一个示例,展示了如何使用这两个函数进行随机读写文件:

    #include <stdio.h>

    int main() {
    FILE *file = fopen("example.txt", "r+"); // 以读写模式打开文件
    if (file == NULL) {
    printf("无法打开文件\n");
    return 1;
    }

    fseek(file, 5, SEEK_SET); // 将文件指针移动到相对于文件开头的位置偏移 5 字节处

    char data[] = "Hello"; // 要写入的数据
    fwrite(data, sizeof(char), sizeof(data) - 1, file); // 写入数据

    fclose(file); // 关闭文件

    return 0;
    }

    上述示例中,程序首先以读写模式打开一个名为 "example.txt" 的文件。然后,使用 fseek() 函数将文件指针移动到相对于文件开头的位置偏移 5 字节处。接下来,定义一个字符数组 data 存储要写入的数据,此处为 "Hello"。最后,使用 fwrite() 函数将数据写入文件中。

    需要注意的是,fseek() 函数用于定位文件指针,它的第三个参数 SEEK_SET 表示从文件开头开始计算偏移量。在示例中,我们将文件指针移动到偏移量为 5 字节的位置,然后使用 fwrite() 函数写入数据。

    如果需要随机读取文件内容,可以类似地使用 fseek()fread() 函数进行定位和读取操作。例如:

    #include <stdio.h>

    int main() {
    FILE *file = fopen("example.txt", "r"); // 以只读模式打开文件
    if (file == NULL) {
    printf("无法打开文件\n");
    return 1;
    }

    fseek(file, 5, SEEK_SET); // 将文件指针移动到相对于文件开头的位置偏移 5 字节处

    char buffer[10]; // 用于存储读取的数据
    fread(buffer, sizeof(char), sizeof(buffer) - 1, file); // 读取数据

    fclose(file); // 关闭文件

    printf("读取的数据:%s\n", buffer);

    return 0;
    }

    上述示例中,程序以只读模式打开文件,并使用 fseek() 函数将文件指针移动到偏移量为 5 字节的位置。然后,定义一个字符数组 buffer 用于存储读取的数据。最后,使用 fread() 函数从文件中读取数据,并将读取的数据存储在 buffer 中。注意,我们使用 printf() 函数打印读取的数据。

    以上是基本的随机读写文件的示例,你可以根据实际需求进行修改和扩展。记得在操作完文件后使用 fclose() 函数关闭文件。

  • 标准输入及其重定向是什么?

    标准输入(stdin)是计算机程序默认的输入设备。它通常与键盘绑定,用于接收用户的输入。在 C 语言中,可以使用 scanf() 函数从标准输入读取数据。

    标准输入重定向是将标准输入从键盘改为其他来源的一种技术。通过标准输入重定向,可以将程序的输入从键盘改为来自文件或其他命令的输出。

    在命令行界面下,可以使用特定的符号将标准输入重定向到文件。以下是常见的标准输入重定向符号:

    • <:将一个文件的内容作为标准输入。
    • <<:将命令行中指定的字符串作为标准输入。
    • |:将前一个命令的输出作为后一个命令的输入。

    例如,假设有一个名为 input.txt 的文本文件,包含了一些输入数据。可以使用以下命令将 input.txt 的内容作为标准输入传递给程序:

    ./program < input.txt

    这样,程序在执行时会从 input.txt 文件中读取数据,而不是从键盘上接收输入。

    类似地,可以使用管道符号 | 将一个命令的输出作为另一个命令的输入。例如,假设有两个程序 program1program2,可以使用以下命令将 program1 的输出作为 program2 的输入:

    ./program1 | ./program2

    这样,program1 的输出会作为 program2 的输入。

    标准输入重定向是一个非常有用的技术,可以方便地处理文件输入、批处理操作等。在编写程序时,通过使用标准输入重定向,可以轻松地测试和调试程序的输入处理逻辑,而无需手动输入数据。

  • 没有用fclose会产生哪些危害?

    如果没有使用fclose关闭打开的文件,会产生以下危害:

    文件资源泄露:未关闭文件会一直占据系统资源,导致系统资源的浪费。

    数据丢失:如果有数据还没有被写入文件,那么这些数据将会丢失。

    文件损坏:如果程序崩溃或关闭文件时出现错误,可能会导致文件损坏,进而无法使用。

    错误的文件操作:如果在文件没有关闭的情况下进行其他文件操作(比如删除、移动、重命名等),可能会出现错误的结果。

    因此,为了避免以上危害,我们应该在使用完文件后及时使用fclose函数来关闭文件。

    基于AI的学习

    我:我学习了本周我自学了《C语言程序设计》第13章的相关内容,并对教材进行了总结。请以苏格拉底的方式对我提问

AI:很高兴听到你自学了《C语言程序设计》第13章的相关内容,并对教材进行了总结。苏格拉底的方式常常通过提问来引导对话和思考,所以我会用一些问题来帮助你进一步思考和巩固所学知识。

  1. 在第13章中,你学习了哪些重要的概念或技术?
  2. 请简要总结一下在这一章中你所学到的关键信息和主要内容。
  3. 是否遇到了一些难题或困惑?如果有的话,请分享并描述你是如何解决它们的。
  4. 你认为在实际编程中,第13章所介绍的概念和技术有哪些应用场景?
  5. 你对这一章的内容有什么进一步的疑问或需要深入了解的地方?

请根据你的学习经验和理解,以苏格拉底的方式回答这些问题,让我们通过对话来更加深入地探索和巩固你的学习成果。?

我:第13章主要介绍了文件的打开关闭,顺序读写与随机读写,标准输入输出等

AI :在学习了《C语言程序设计》第13章。让我进一步问你几个问题为什么文件的打开和关闭是编程中重要的概念?

  1. 请解释一下顺序读写和随机读写的区别以及它们的应用场景。
  2. 标准输入输出是什么?在编程中,你通常会使用它们做什么?
  3. 在实际编程中,你能举一个例子来说明文件的打开和关闭以及顺序读写或随机读写的应用场景吗?
  4. 在学习这一章的过程中,你是否遇到了一些困惑或难题?如果有,请分享并描述你是如何解决它们的。:

通过回答这些问题,我们可以更深入地探讨你对《C语言程序设计》第13章内容的理解和应用。。

我:文件的打开和关闭是编程中重要的概念,因为它们涉及到对文件进行读取和写入操作。以下是相关解释:

  1. 打开和关闭文件:

    打开文件:通过打开文件,程序可以与外部的文件建立联系,以便读取或写入文件中的数据。

    关闭文件:在完成对文件的读写操作后,需要关闭文件,以释放系统资源并确保文件的完整性。

  2. 顺序读写和随机读写的区别和应用场景:

    顺序读写:从文件的起始位置开始按照顺序连续读取或写入数据,逐个字节或逐行进行操作。适用于按顺序处理大型数据集或日志文件。

    随机读写:根据指定的位置进行读取或写入操作,可以直接访问文件中的任意位置。适用于需要随机访问特定数据的场景,如数据库或索引文件。

  3. 标准输入输出(Standard Input/Output):

    标准输入(stdin):程序从标准输入中读取数据,默认情况下通常是用户的键盘输入。

    标准输出(stdout):程序将结果输出到标准输出,默认情况下通常是控制台屏幕。

  4. 文件操作应用场景的例子:

    • 打开和关闭文件的应用场景:当需要读取或写入文件时,首先需要打开文件以获取对该文件的访问权限,然后进行读写操作。完成后,关闭文件以释放资源。
    • 顺序读写和随机读写的应用场景:假设有一个存储学生成绩数据的文件,如果需要按照顺序逐行计算平均分数,可以使用顺序读写;如果需要根据学生的学号进行查找和修改成绩,可以使用随机读写。
代码行数(新增/累积 博客量(新增/累积) 学习时间(新增/累积)
目标 5000行 30篇 400小时
第一周 200/200 2/2 20/20
第二周 300/500 2/4 18/38
第三周 200/250 4/4 20/25
第五周 300/300 3/3 20/20

以上是本周的学习进度条,我在代码行数、博客数量和学习时间上都有一定的增长,但仍需努力