当前位置: 首页 > news >正文

C语言学习笔记 Day15(文件管理--下)

Day15 内容梳理:

目录

C语言学习笔记 Day14(文件管理--上)-CSDN博客

Chapter 10  文件操作

10.2 文件加密、解密

(1)文件加密

(2)文件解密

10.3 文件读取、写入

(1)逐字符读取文件

(2)逐字符写入文件

(3)逐行读取文件

(4)逐行写入文件

10.4 技能应用(文件写入+随机数)


Chapter 10  文件操作

10.2 文件加密、解密

(1)文件加密

先在D盘手动创建了名为"解密1"的文件,写入了“这是一句话。”

结果如下,左侧是原始文件,右侧是加密后的文件

(2)文件解密

继续用上面通过ch++加密过的文件,这次解密文件只需要while循环中让ch--。

结果如下,从“解密1”到“加密1”,再到“解密2”,完成了转换。

10.3 文件读取、写入

(1)逐字符读取文件

判断是否到文件结尾的函数:feof(文件指针)

适用范围:文本文件和二进制文件都可

使用方式:没有到文件结尾则返回0,到文件结尾则返回非零值,因此这么用while( ! feof(fp) ){}

(2)逐字符写入文件

在字符串中遇到\n不会终止读写,而是换行,但是遇到\0则会终止读写。

无论是哪种情况,代码整体没有改动。(只有字符串中发生了\n或\0等改动)

情况1:文本没有\n也没有\0的情况:

原文件:                                                             写入后的文件:

情况2:文本有\n的情况,会换行

 原文件:                                                             写入后的文件:

情况3:文本有\0的情况,会只写入\0以前的内容

 原文件:                                                             写入后的文件:

 

(3)逐行读取文件

(4)逐行写入文件

注意需要导入string库(代码为#include<string.h>)

需要特别注意的有两点。

①代码scanf("%[^\n]",p);的作用:

 是吞噬输入字符串中的\n,也就是不把回车以文本的形式(\n)存入文本文件中。但是考虑到我们仍需要回车来分割字段,所以加了strcat(p,”\n”);来追加回车。

②if( !strcmp(p, “comm=exit”))中加了个“!”:

因为strcmp()的作用是接收两个参数并比较,返回值为0则代表两个值相同。但放回代码看也就是if(0),无法进入条件,所以在strcmp()前加了“!”符号,相当于如果符合条件,就是if(1)。

运行代码后,直接在弹出的调试控制台中输入文本。输入什么都行,我这里输入的是hello world的代码。

得到:

10.4 技能应用(文件写入+随机数)

随机生成四则运算题目。

需要用到:文件写入、随机数种子、枚举类(枚举出加减乘除的符号)

分两步进行,一步是随机生成题目,另一步是运算出这些随机式的答案。

第一步,生成四则运算题目

srand()是stdlib库的,time是time库的,需要在代码的最开头写:

#include<stdlib.h>

#include<time.h>

这里用sprintf()而非printf(),是因为sprintf()可以把内容按格式排列。后续计算四则运算结果所用到的sscanf()也是同理。

结果如下,每运行一次代码,文本内容都会被随机生成的新内容覆盖。

第二步,读取式子并在另一个文本文件中生成式子+答案

首先利用while循环和判断是否到文本末尾的feof()来逐行读取,再利用sscanf()按一定格式取得num1、符号、num2.通过switch判断符号是哪个之后,在对应的case中执行运算,并把结果存储进另一个文件中。

结果如下:


http://www.mrgr.cn/news/18146.html

相关文章:

  • Nginx: 配置文件重载的原理和热部署
  • 【Oracle点滴积累】解决IMP-00017、ORA-20005、ORA-06512错误的方法
  • 代码随想录冲冲冲 Day34 动态规划Part2
  • 智慧理财新纪元:蚂蚁集团“支小宝”智能理财助理深度体验与测评
  • Notepad下载安装
  • JavaWeb(基于SpringBoot开发)全总结(1)
  • DORIS - DORIS注意事项(一)
  • 基于VUE的校园二手物品交易管理系统的设计与实现 (含源码+sql+视频导入教程)
  • 【influxdb 第二篇章】docker-compose、windows、linux 安装
  • 【卡码网C++基础课 16.出现频率最高的字母】
  • 惠中科技:开启综合光伏清洗新征程
  • Elasticsearch:使用 inference API 进行语义搜索
  • 自制efficientnet网络
  • 新一代网络研发利器——开物™,让用户每一行代码都贡献在核心创新
  • wlanapi.dll丢失怎么办?有没有什么靠谱的修复wlanapi.dll方法
  • U-Mail垃圾邮件过滤网关‍是如何过滤垃圾邮件的?
  • sql学习 inner join,left join,right join
  • netty编程之基于websocket实现聊天功能
  • 数据结构---五大排序---哈希表---二分查找法
  • 个人的 minimal-mistakes 配置记录