2024-2025-1 20241316 《计算机基础与程序设计》第十二周学习总结

2024-2025-1 20241316 《计算机基础与程序设计》第十二周学习总结

作业信息

这个作业属于哪个课程 2024-2025-1-计算机基础与程序设计
这个作业的目标
作业正文 ... 本博客链接

教材学习内容总结

一、文件概述

  • 文件概念
    • 解释文件是存储在外部介质(如磁盘)上的数据集合。在C语言中,文件可以是文本文件(由字符序列组成,每个字符占一个字节,便于人类阅读)或二进制文件(以字节序列存储数据,数据的存储格式和内存中的存储格式相似,更适合计算机存储和读取)。
    • 举例说明文本文件和二进制文件的区别,如一个整数1234在文本文件中存储为字符'1'、'2'、'3'、'4'对应的ASCII码,而在二进制文件中则按照整数在内存中的存储方式(例如4个字节的二进制表示)存储。
  • 文件指针
    • 介绍文件指针的定义,FILE *类型的指针用于指向一个文件结构体,这个结构体包含了文件的各种信息,如文件名、文件状态和当前文件位置等。
    • 说明文件指针在文件操作中的核心地位,所有对文件的读写操作都是通过文件指针来完成的。

二、文件的打开与关闭

  • fopen函数
    • 详细讲解fopen函数的语法,FILE *fopen(const char *filename, const char *mode);,其中filename是文件名(包括路径),mode是文件打开模式,如"r"(只读)、"w"(只写,会清空文件原有内容)、"a"(追加,在文件末尾添加内容)等用于文本文件,"rb""wb""ab"等用于二进制文件。
    • 解释不同打开模式的适用场景,以及如果文件打开失败,fopen函数返回NULL
  • fclose函数
    • 强调文件使用完毕后需要关闭的重要性,使用fclose函数int fclose(FILE *stream);来关闭文件,其中stream是之前打开文件时返回的文件指针。
    • 说明关闭文件的主要作用,包括释放文件资源、将缓冲区的数据写入文件等。如果关闭成功,fclose函数返回0,否则返回EOF(通常是 - 1)。

三、文件的读写操作

  • 字符读写
    • fgetc和fputc函数
      • 介绍fgetc函数int fgetc(FILE *stream);用于从指定文件指针stream指向的文件中读取一个字符,返回值是读取到的字符(如果遇到文件末尾,返回EOF)。
      • 讲解fputc函数int fputc(int c, FILE *stream);用于将一个字符c写入指定文件指针stream指向的文件中,写入成功返回写入的字符,失败返回EOF
      • 通过简单的代码示例展示如何逐字符读取和写入文件,如复制一个文本文件的内容到另一个文件。
  • 字符串读写
    • fgets和fputs函数
      • 讲解fgets函数char *fgets(char *str, int n, FILE *stream);用于从文件中读取一行字符串(包括换行符),str是存储读取字符串的字符数组,n是最多读取的字符数,返回值是指向str的指针(如果遇到文件末尾或者读取错误,返回NULL)。
      • 介绍fputs函数int fputs(const char *str, FILE *stream);用于将一个字符串str写入文件,写入成功返回非负整数,失败返回EOF
      • 给出读取和写入字符串的实际应用场景,如读取配置文件中的一行配置信息并进行修改后重新写入。
  • 格式化读写
    • fscanf和fprintf函数
      • 详细说明fscanf函数int fscanf(FILE *stream, const char *format,...);的用法,它类似于scanf函数,但是从文件中按照指定格式format读取数据,参数列表根据格式字符串的要求来确定。
      • 讲解fprintf函数int fprintf(FILE *stream, const char *format,...);,它类似于printf函数,用于按照指定格式format将数据写入文件,参数列表也是根据格式字符串的要求来确定。
      • 通过实际例子,如从一个包含学生成绩信息的文本文件中读取学生姓名和成绩,经过计算后将新的成绩信息重新写入文件,展示格式化读写的操作。
  • 二进制文件读写
    • fread和fwrite函数
      • 介绍fread函数size_t fread(void *ptr, size_t size, size_t count, FILE *stream);用于从二进制文件中读取数据,ptr是存储读取数据的内存地址,size是每个数据项的大小,count是读取的数据项数量,返回值是实际读取的数据项数量。
      • 讲解fwrite函数size_t fwrite(const void *ptr, size_t size, size_t count, FILE *stream);用于将数据写入二进制文件,参数含义和fread类似,返回值是实际写入的数据项数量。
      • 以结构体数据的存储和读取为例,展示二进制文件读写在处理复杂数据结构时的优势,如将一个包含多个成员的结构体数组存储到二进制文件中,然后再读取出来恢复数据结构。

四、文件定位

  • ftell函数
    • 解释ftell函数long ftell(FILE *stream);用于获取文件指针当前位置相对于文件开头的偏移量(字节数),返回值是偏移量。如果出错,返回 - 1L。
    • 说明可以通过这个偏移量来记录文件读取或写入的位置,方便后续的操作,比如在文件中间某个位置插入数据。
  • fseek函数
    • 详细讲解fseek函数int fseek(FILE *stream, long offset, int whence);,用于移动文件指针的位置。stream是文件指针,offset是偏移量,whence指定偏移的起始位置(可以是SEEK_SET(文件开头)、SEEK_CUR(当前位置)、SEEK_END(文件末尾))。
    • 举例说明如何使用fseek函数来实现随机读写,如跳转到文件中间读取特定的数据记录,或者在文件末尾向前移动一定字节数来修改最后几条记录。
  • rewind函数
    • 介绍rewind函数void rewind(FILE *stream);,它的作用是将文件指针重新定位到文件开头,相当于fseek(stream, 0L, SEEK_SET);,方便重新读取文件内容。

这只是一个大致的知识框架,具体内容还可能包括文件操作的错误处理(如检查ferrorfeof函数的返回值)等相关知识,不同教材在内容深度和细节上可能会有所不同。

posted @ 2024-12-16 08:58  李恩徽  阅读(8)  评论(0编辑  收藏  举报