首页 > 编程语言 >2024-2025-1 20241316 《计算机基础与程序设计》第十四周学习总结

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

时间:2024-12-27 10:11:14浏览次数:6  
标签:fp 文件 int 2024 2025 FILE 20241316 size 指针

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

作业信息

这个作业属于哪个课程 2024-2025-1-计算机基础与程序设计
这个作业要求在哪里 2024-2025-1计算机基础与程序设计第十四周作业
这个作业的目标 《C语言程序设计》第13-14章并完成云班课测试
作业正文 https://www.cnblogs.com/bml128/p/18634828

教材学习内容总结

第 13 章 文件操作

  1. 文件概述
    • 文件概念:文件是存储在外部介质(如硬盘、U盘 等)上的数据集合,在 C 语言中,文件被看作是一个字符(字节)的序列,即流式文件。
    • 文件分类:分为文本文件和二进制文件。文本文件以字符的 ASCII 码形式存储,每个字符占一个字节;二进制文件则以数据在内存中的存储形式原样输出到文件,数据存储紧凑,节省空间,适合存储数值数据。
  2. 文件指针
    • 定义:是一个指向 FILE 类型结构体的指针变量,用于标识和操作文件。FILE *fp;声明一个文件指针变量 fp
    • 作用:通过文件指针,程序可以对相应的文件进行打开、读取、写入、关闭等操作。每个被使用的文件都在内存中开辟一个相应的 FILE 结构体区域,存放文件的有关信息(如文件当前读写位置、文件状态标志等),文件指针指向该结构体区域。
  3. 文件的打开与关闭
    • 打开文件:使用 fopen 函数,其原型为 FILE *fopen(const char *filename, const char *mode);filename 是要打开的文件名,mode 是打开文件的方式(如 "r" 只读、"w" 只写、"a" 追加等)。若打开成功,返回一个指向该文件的文件指针;否则返回 NULL
    • 关闭文件:调用 fclose 函数,int fclose(FILE *fp);。关闭文件能确保数据被正确写入存储设备,释放文件指针等资源。成功关闭返回 0,否则返回 EOF
  4. 文件的读写操作
    • 字符读写函数fgetc 从文件中读取一个字符,int fgetc(FILE *fp);,返回读取的字符,若到达文件末尾或出错则返回 EOFfputc 向文件中写入一个字符,int fputc(int c, FILE *fp);,成功写入返回写入的字符,否则返回 EOF
    • 字符串读写函数fgets 从文件中读取一个字符串,char *fgets(char *str, int n, FILE *fp);str 为存放读取字符串的数组,n 为读取的最大字符数(包括字符串结束符 '\0')。fputs 向文件中写入一个字符串,int fputs(const char *str, FILE *fp);,成功返回非负整数,失败返回 EOF
    • 格式化读写函数fscanf 从文件中按指定格式读取数据,int fscanf(FILE *fp, const char *format,...);format 为格式控制字符串,与 scanf 类似,但从文件中读取数据。fprintf 按指定格式向文件中写入数据,int fprintf(FILE *fp, const char *format,...);
    • 数据块读写函数fread 从文件中读取数据块,size_t fread(void *ptr, size_t size, size_t nmemb, FILE *fp);ptr 为存放数据的内存地址,size 为每个数据项的大小(字节数),nmemb 为数据项的个数。fwrite 向文件中写入数据块,size_t fwrite(const void *ptr, size_t size, size_t nmemb, FILE *fp);。常用于读写结构体等数据块。
  5. 文件的定位
    • 文件位置指针:每个文件都有一个文件位置指针,指向当前读写位置。顺序读写时,文件位置指针自动移动;随机读写时,需手动移动文件位置指针。
    • 定位函数fseek 用于移动文件位置指针,int fseek(FILE *fp, long offset, int origin);offset 为偏移量,origin 为起始点(SEEK_SET 文件开头、SEEK_CUR 当前位置、SEEK_END 文件末尾)。ftell 用于获取文件位置指针当前位置,long ftell(FILE *fp);,返回当前位置相对于文件开头的字节数,出错返回 -1Lrewind 用于将文件位置指针重新定位到文件开头,void rewind(FILE *fp);

第 14 章 预处理命令

  1. 预处理概述
    • 概念:C 语言预处理是在编译之前对源程序进行的处理,由预处理程序完成。预处理命令以 # 开头,如 #include#define 等。预处理命令不是 C 语言本身的组成部分,但扩展了 C 语言的编程环境和功能。
  2. 宏定义
    • 无参数宏定义:使用 #define 定义一个标识符来代表一个字符串(宏名和宏体)。例如,#define PI 3.14159,此后在程序中出现 PI 的地方,预处理器都会将其替换为 3.14159。宏定义提高了程序的可读性和可维护性,方便修改常量值。
    • 有参数宏定义:形式为 #define 宏名(参数表) 宏体,例如 #define MAX(a, b) ((a) > (b)? (a) : (b))。使用时像函数调用一样,传入参数,预处理器会将宏体中的参数替换为实际参数并展开。与函数不同,宏展开是在编译前进行文本替换,不进行参数类型检查,执行效率高,但可能导致代码膨胀。
  3. 文件包含
    • 概念:使用 #include 命令将另一个源文件的内容包含到当前源文件中。有两种形式:#include <文件名> 用于包含系统头文件,预处理器会在系统指定的目录中查找该文件;#include "文件名" 用于包含用户自定义的头文件,预处理器先在当前目录中查找,若找不到再到系统指定目录查找。
    • 作用:避免重复编写相同代码,方便模块化编程。例如,将一些常用的函数声明、结构体定义等放在头文件中,其他源文件通过 #include 包含该头文件即可使用其中的内容。
  4. 条件编译
    • 概念:通过条件编译命令,使程序在不同条件下编译不同的代码部分。这样可以方便地对程序进行调试、移植或针对不同环境生成不同版本的可执行文件。
    • 常见条件编译命令
      • #ifdef:如果指定的宏已定义,则编译后续代码,直到遇到 #endif#else。例如:
#ifdef DEBUG
    printf("Debugging information\n");
#endif
    - `#ifndef`:与 `#ifdef` 相反,如果指定的宏未定义,则编译后续代码。
    - `#if`:根据常量表达式的值决定是否编译后续代码。例如:
#define VERSION 2
#if VERSION == 1
    // 版本 1 的代码
#elif VERSION == 2
    // 版本 2 的代码
#else
    // 其他版本的代码
#endif

标签:fp,文件,int,2024,2025,FILE,20241316,size,指针
From: https://www.cnblogs.com/bml128/p/18634828

相关文章

  • CVE-2024-11477:7-Zip 中的严重缺陷可让黑客控制
    7-Zip是一款完全免费而且开源的压缩软件,相比其他软件有更高的压缩比而且相对于WinRAR不会消耗大量资源。7-Zip文件压缩工具中发现了一个漏洞,攻击者可以通过特制的存档远程执行恶意代码。为了解决这个问题,开发人员发布了一个更新,但必须手动安装,因为该程序不支持自动更......
  • Oracle WebLogic Server反序列化漏洞(CVE-2024-21216)
    免责声明请勿使用本文中提到的技术进行非法测试或行为。使用本文中提供的信息或工具所造成的任何后果和损失由使用者自行承担,所产生的一切不良后果与文章作者无关。该文章仅供学习用途使用。一、简介WebLogic是一款由BEA系统公司开发的JavaEE应用服务器,现由Oracle......
  • NLP论文速读(AAAI 2024)|面向序列生成的基于高效采样强化学习 (Efficient Sampling-ba
    论文速读|ESRL:EfficientSampling-basedReinforcementLearning forSequenceGeneration论文信息:简介:   本文探讨了将强化学习(ReinforcementLearning,RL)应用于序列生成模型的背景。序列生成是一个长期决策问题,而RL特别适合优化长期奖励,例如序列级别的评分......
  • 盘点2024年9大热门项目管理工具,你都用过哪些?
    以下是2024年度备受好评的十大项目管理工具,它们各自具有独特的功能和优势,能够精准满足不同类型企业和项目的多样化需求:1.板栗看板简介:板栗看板是一款以“看板”方式直观展示项目及任务进度的可视化管理软件,旨在帮助团队简化项目管理流程,优化任务分配与协作。功能:它支持自定义看......
  • kali魔改系统更新,基于kali2024.4
    公众号:泷羽Sec-尘宇安全前言前几天,W啥都学大佬,更新了kali魔改系统:zss_kali,之前的是kali2024.1,现在变成了kali2024.4系统版本:kalilinux2024.4固件类型:BIOS用户:zss密码:ss下载地址:https://pan.quark.cn/s/f68bc0b6c3f0项目地址:https://github.com/Curio......
  • 一维数组、多维数组、Array(deepToString sort fill binarySearch)方法2024122620241
    数组20241226[数组详情](深入理解Java数组-静默虚空-博客园)什么是数组:数组是相同类型数据的有序集合注意:必须是相同数据数组描述的是相同类型的若干个数据,按照一定的先后次序排列组合而成其中,每一个数据称作一个数组元素。每个数组元素可以通过一个下标来访问......
  • Diary - 2024.12.26
    今天作业量似乎更多了。或许老师认为我们做完作业后都还有很多时间吧!不是我真的红温了。LuoguP11420[清华集训2024]乘积的期望。我今天搞了一天的这玩意,写到最后被卡常了,卡了2h没进去。我玉玉了。我玉玉了。我玉玉了。我玉玉了。我玉玉了。我玉玉了。现在成就是Luog......
  • 最新版软件著作权申请流程【2024.12】
    最近刚刚给大创的软件申请了软件著作权,在这里分享一下经验。一、软著平台上注册所有著作人都需要在中国版权保护中心上面完成注册以及实名认证,实名认证大概需要3-4个工作日。二、平台上资料的提交1.点击版权登记的软件登记,选择计算机软件著作权登记申请。2.点击我是申......
  • 2024/12/26
    「省选联考2023」城市建造考虑选出\(t\)个点,每个连通块选出恰好一个点。注意到在同一个点双里的点要么同时被选出要么全部都不选。建圆方树,选出一个方点就代表选出了所有其代表的点双上的所有圆点。有一个性质:所有被选中的方点是连通的。否则一个连通块必定存在两个点被选......
  • # 2024-2025-1 20241310 《计算机基础与程序设计》第十四周学习总结
    2024-2025-120241310《计算机基础与程序设计》第十四周学习总结作业信息这个作业属于哪个课程2024-2025-1-计算机基础与程序设计这个作业要求在哪里2024-2025-1计算机基础与程序设计第一周作业这个作业的目标自学教材《C语言程序设计》第13-14章并完成云班课测......