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

news/2025/1/1 17:43:06/文章来源:https://www.cnblogs.com/wchxx/p/18639513

作业信息

这个作业属于哪个课程 2024-2025-1-计算机基础与程序设计
这个作业要求在哪里 https://www.cnblogs.com/rocedu/p/9577842.html#WEEK14
这个作业的目标 《C语言程序设计》第13章
作业正文 https://www.cnblogs.com/wchxx/p/18639513

**教材学习内容总结

1. 文件的打开与关闭

  • 打开文件:使用fopen()函数打开文件,该函数接受两个参数,文件名和打开模式(如"r"读模式、"w"写模式、"a"追加模式)。如果文件打开失败,返回NULL
    FILE* pf = fopen("test.txt", "w");
    if (pf == NULL) {perror("fopen");return 0;
    }
    
  • 关闭文件:使用fclose()函数关闭文件,释放资源,并确保数据写入磁盘。
    fclose(pf);
    pf = NULL;
    

2. 文件的顺序读写

  • 字符读写
    • 读字符:使用fgetc()函数从文件中读取一个字符。
      char c = fgetc(fp);
      
    • 写字符:使用fputc()函数将一个字符写入文件。
      fputc('a', pf);
      
  • 字符串读写
    • 读字符串:使用fgets()函数读取一行字符串,直到遇到换行符或EOF。
      char s[1024];
      fgets(s, sizeof(s), fp);
      
    • 写字符串:使用fputs()函数写入字符串,不会自动添加换行符。
      fputs("Hello World\n", pf);
      
  • 块读写:使用fread()fwrite()函数读写数据块。
    // 写入
    fwrite(&data, sizeof(data), 1, pf);
    // 读取
    fread(&data, sizeof(data), 1, pf);
    

3. 文件的随机读写

  • 文件指针移动:使用fseek()函数移动文件指针到指定位置,基于不同的基准点(SEEK_SETSEEK_CURSEEK_END)。
    fseek(fp, 0L, SEEK_SET); // 移动到文件开头
    
  • 获取文件指针位置:使用ftell()函数获取当前文件指针的位置。
    long position = ftell(fp);
    
  • 重置文件指针:使用rewind()函数将文件指针重置到文件开头。
    rewind(fp);
    

4. 文件操作的注意事项

  • 错误处理:检查每个文件操作函数的返回值,处理可能出现的错误。
  • 文件权限:确保程序有足够的权限来访问和操作文件。
  • 文件格式:了解文件的格式和结构,以便正确地读取和写入数据。

ferror() 函数

ferror() 函数用于检查指定文件流是否在最近的文件操作中发生了错误。如果文件操作成功,ferror() 返回 0;如果发生了错误,返回非零值。ferror() 函数不会清除错误标志,这意味着如果发生错误,多次调用 ferror() 会一直返回非零值,直到使用 clearerr() 函数清除错误标志。

函数原型

int ferror(FILE *stream);

使用示例

FILE *fp = fopen("example.txt", "r");
if (fp == NULL) {// 打开文件失败
} else {char c;while ((c = fgetc(fp)) != EOF) {// 处理字符if (ferror(fp)) {// 发生错误break;}}fclose(fp);
}

feof() 函数

feof() 函数用于检查指定文件流是否已经到达文件末尾(EOF)。如果文件流已经到达文件末尾,feof() 返回非零值;否则返回 0。feof() 函数不会清除 EOF 标志,这意味着如果到达文件末尾,多次调用 feof() 会一直返回非零值,直到使用 clearerr() 函数清除 EOF 标志。

函数原型

int feof(FILE *stream);

使用示例

FILE *fp = fopen("example.txt", "r");
if (fp == NULL) {// 打开文件失败
} else {char c;while ((c = fgetc(fp)) != EOF) {// 处理字符if (feof(fp)) {// 到达文件末尾break;}}fclose(fp);
}

注意事项

  • ferror()feof() 都应该在文件操作之后立即调用,因为它们依赖于文件流的错误和 EOF 标志。
  • 如果一个文件操作同时导致错误和到达文件末尾,ferror()feof() 都会返回非零值。
  • 使用 clearerr() 函数可以同时清除错误标志和 EOF 标志,恢复文件流的状态。

基于AI的学习




本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/861013.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

视野修炼-技术周刊第115期 | 现代的 Nodejs 能力

① 一些现代的 Nodejs 能力 ② MarkItDown ③ ReactAI ④ 背景移除 ⑤ 智能图片描述生成器生成器欢迎来到第 115 期的【视野修炼 - 技术周刊】,下面是本期的精选内容简介 🔥强烈推荐一些现代的 Nodejs 能力🔧开源工具&技术资讯MarkItDown ReactAI🤖AI工具&资讯背…

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

这个作业属于哪个课程 <班级的链接>(2024-2025-1-计算机基础与程序设计)这个作业要求在哪里 <作业要求的链接>(2024-2025-1计算机基础与程序设计第十四周作业)这个作业的目标 <深刻学习C语言,反思一周学习,温故知新>作业正文 ... 本博客链接https://www.…

11. 日期和时间控件

一、日期和时间控件日期和时间类也是 PySide6 中的基本类,利用它们可以设置纪年法、记录某个日期时间点、对日期时间进行计算等。用户输入日期时间及显示日期时间时需要用到日期时间控件,本节介绍有关日期时间的类及相关控件。我们可以在终端中使用 pip 安装 pyside6 模块。 …

浅析FHQ-treap

前言 更好的阅读体验 默认读者会 BST 的基本操作。 节点定义 替罪羊树采用了懒惰删除的方法,不会立即删除某个点,而是在重构时不放进数组。 struct node{ int ch[2], val; int siz1, siz2, cnt, sum; //扣去懒惰删除的节点数量,没扣去懒惰删除的节点数量,树内相同权值的…

20241313刘鸣宇《计算机基础与程序设计》第14周学习总结

2024-2025-1 20241313《计算机基础与程序设计》第14周学习总结 作业信息这个作业属于哪个课程 <班级的链接>(如2024-2025-1-计算机基础与程序设计)这个作业要求在哪里 <作业要求的链接>(如2024-2025-1计算机基础与程序设计第一周作业)这个作业的目标 <写上具…

学习笔记:旋转treap

前言 更好的阅读体验。 无旋 treap。 默认读者会 BST 的基本操作、堆和旋转。 本文旋转部分和上面那篇文章的相同。 代码中是小根堆。 思想 treap 既是一棵二叉查找树(tree),也是一个二叉堆(heap)。 但是如果这两个数据结构用同一个权值维护,那么这两种数据结构是矛盾的。…

最早发明的自平衡二叉树:AVL

前言 更好的阅读体验 默认读者会基本的 BST 操作。 节点定义 平衡因子:BF(BalanceFactor),左子树高 \(-\) 右子树高。 平衡树是让树的形态尽可能像完全二叉树,而不是链。 在 AVL 中,我们认为 \(\left|\text{BF}\right|\le 1\),也就是 BF 为 \(0,1,-1\) 时的子树是平衡的,…

[COCI2015-2016#2] DRZAVA

思路 先把赛时想法搬一部分过来转化题意, 对于 \(n\) 个带权 \(k\) 的点, 任意两点 \(i, j\) 之间有双向连边, 其边权为 \(w_{i, j} = d_{i, j}\) , 求一最小阈值 \(C\) , 满足对于所有 \(w \leq C\) 的边连接后, 存在一个连通块 \(G\), 使得 \[\sum_{i = 1}^{\lvert G \rvert}…

The End

一、学期回顾 1.1 回顾你对于软件工程课程的想象 根据你对课程目标和期待,回顾目前的所学所练所得,在哪些方面达到了你的期待和目标,哪些方面还存在哪些不足,为什么? 达成的目标与期待理论与实践结合: 课程的最大目标之一是将软件工程的理论知识应用到实践中。在这一点上…

关于本站

我是 fush,一个很菜的 oier。 这里,我只想分享一些自己在学习记录。 由于本人较菜,有哪里写的不严谨的地方欢迎指出。 除了下面几个账号(本人的),如果要转载请写明出处,谢谢。 洛谷

从 Leafy-Tree 到 WBLT

更好的阅读体验。 UPD:2024/12/04 添加序列操作 UPD:2024/12/10 添加可持久化 前言 前面说过 FHQ-treap 的缺点在于常数。 这次篇文章要讲解 WBLT,码量与 FHQ-treap 差的不多,结构与线段树类似。 也可以分裂合并(不推荐),可持久化,但常数远小于 FHQ-treap。 美中不足的…

快消零售业的创新之路:智能AI助力员工培训SOP高效构建

在快速消费品零售行业,员工培训是提升服务质量、增强竞争力的重要手段。然而,传统员工培训方式往往存在培训周期长、效果难以评估等问题,难以满足快消零售行业对于高效、精准培训的需求。随着人工智能技术的不断发展,智能AI在员工培训中的应用逐渐受到重视,特别是在构建员…