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

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.kler.cn/a/287708.html

相关文章:

  • SpringBoot实现WebSocket
  • 【AtCoder】Beginner Contest 380-C.Move Segment
  • Cursor安装Windows / Ubuntu
  • Redis性能优化——针对实习面试
  • 整数唯一分解定理
  • stm32——通用定时器时钟知识点
  • 《python语言程序设计》第8章第12题生物信息:找出基因,生物学家使用字母A C T和G构成字符2串建模一个基因组(上)
  • C++ 11相关新特性(using与typedef、尾置返回值类型)
  • ecmascript和javascript的区别
  • unity游戏开发——标记物体 一目了然
  • 深度学习-11-为什么AI需要GPU
  • filter过滤器和reduce求和以及
  • 9.1centos安装postgres
  • JVM GC 调优
  • ARM体系与架构
  • 使用 Bodybuilder 项目简化前端ES查询
  • 某系统存在任意文件下载漏洞
  • Springboot使用Mongo数据库实现文件的上传下载预览等服务接口
  • pbds库
  • App使用Job定时器不准时的原因分析
  • Java项目中的分库分表实践指南
  • 前端学习Day36
  • 【设计模式之原型模式——矩形原型】
  • Spring 事务 数据库连接获取和释放原理
  • 网络安全的历史
  • 基于my Batis优化图书管理系统(总)