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

【C语言】实现文件内容映射转移

有两个文件(QA,与QB)。 文件A是经过了字母映射加密的文本(将英文字母一一映射成了另一个), 文件B是字母映射的关系表(格式如A-c;B-R;…,其中前一个字母为加密前的),编写程序完成下列功能: (1)读取文件A中的内容,并将其保存在一个字符数组a中;读取文件B中的内容,并生成一个结构体数组b(结构体中有两个成员,分别是加密前和加密后的字母) (2)借助数组b,求出数组a中各元素在加密前所对应的字符,从而生成字符数组c,并将字符数组c的内容写入文件C中

  • 🚀第一步读取A中内容保存在数组a中
  • 第二步读取B中内容,以结构体形式保存
  • 第三步将数组a与加密前字母对比,将加密后的字符存入数组c中。

文件A是经过了字母映射加密的文本(将英文字母一一映射成了另一个),
文件B是字母映射的关系表(格式如A-c;B-R;…,其中前一个字母为加密前的),编写程序完成下列功能:
(1)读取文件A中的内容,并将其保存在一个字符数组a中;读取文件B中的内容,并生成一个结构体数组b(结构体中有两个成员,分别是加密前和加密后的字母)
(2)借助数组b,求出数组a中各元素在加密前所对应的字符,从而生成字符数组c,并将字符数组c的内容写入文件C中

🚀第一步读取A中内容保存在数组a中

fileA = "Q3.A.txt";//打开文件要知道文件名pf1 = fopen(fileA, "r");//打开文件A,以“r”的形式读取if (pf1 == NULL){perror("fopen");//判断是否打开失败}while (!feof(pf1))//当pf1指向的文件里的内容读取没有结束{a[lenA] = fgetc(pf1);//fgec用来将文件的内容读取到内存中lenA++;//用lenA来记录读取的个数}fclose(pf1);//读取完毕,关闭文件a[lenA] = '\0';//最后再见文件中的'\0'加上。

第二步读取B中内容,以结构体形式保存

typedef struct secert//文件B中内容要求以结构体形式接收
{char pre;//加密前字符char pos;//加密后字符
}Sec b[100];//重命名为Sec,并定义一个数组bfileB = "Q3.B.txt";//打开文件B,要知道文件B的名字pf2 = fopen(fileB, "r");//以r的形式读取if (pf2 == NULL){perror("fopen");//判断是否为空}while (!feof(pf2))//当pf2指向的文件没有内容时,读取结束{fscanf(pf2, "%c %c", &b[lenB].pre, &b[lenB].pos);//fscanf是将文件里的内容读取到内存中,用法与scanf类似,只不过前面的参数多了个文件指针。lenB++;//用lenB来记录读取的个数}fclose(pf2);//关闭文件

第三步将数组a与加密前字母对比,将加密后的字符存入数组c中。

	pf3 = fopen(ZQ3.C.txt", "wb");//打开文件,以wb的形式创建一个名字叫Q3的文件。for (i = 0; i < lenA; i++){flag = 0;for (j = 0; j < lenB; j++){if (a[i] == b[j].pos)//让数组a中的字符与结构体中加密前的字符进行比较,如果相同则将加密后的字符放在数组c中,并将加密后的字符打印出来{c[i] = b[j].pre;printf("%c", c[i]);fputc(c[i],pf3);//并将加密后的字符写入到文件C中flag = 1;continue;}}if (flag = 0){printf("%c", c[i]);fputc(c[i], pf3);}}fclose(pf3);
}

完整代码:

typedef struct secert
{char pre;char pos;
}Sec;
int main()
{char a[100];Sec b[100];char c[100];int lenA = 0;int lenB = 0;int i, j ,flag;char* fileA, * fileB;FILE* pf1, * pf2, * pf3;//打开文件A,要知道文件a的名字fileA = "Q3.A.txt";pf1 = fopen(fileA, "r");if (pf1 == NULL){perror("fopen");}while (!feof(pf1)){a[lenA] = fgetc(pf1);lenA++;}fclose(pf1);a[lenA] = '\0';*/fileB = "Q3.B.txt";pf2 = fopen(fileB, "r");if (pf2 == NULL){perror("fopen");}while (!feof(pf2)){fscanf(pf2, "%c %c", &b[lenB].pre, &b[lenB].pos);lenB++;}fclose(pf2);*/pf3 = fopen("Q3.C.txt", "wb");for (i = 0; i < lenA; i++){flag = 0;for (j = 0; j < lenB; j++){if (a[i] == b[j].pos){c[i] = b[j].pre;printf("%c", c[i]);fputc(c[i],pf3);flag = 1;continue;}}if (flag = 0){printf("%c", c[i]);fputc(c[i], pf3);}}fclose(pf3);return 0;
}
http://www.lryc.cn/news/22335.html

相关文章:

  • html css输入框获得焦点、失去焦点效果
  • Spark Streaming
  • [kubernetes]-k8s通过psp限制nvidia-plugin插件的使用
  • 简单易懂又非常牛逼的Spring源码解析,推断构造与bean的实例化
  • Win11的两个实用技巧系列清理磁盘碎片、设置系统还原点的方法
  • 嵌入式 STM32 红外遥控
  • 【java web篇】使用JDBC操作数据库
  • 华为OD机试题,用 Java 解【最小步骤数】问题
  • JAVA中 throw 和 throws 的区别含案例
  • 基于SpringCloud的可靠消息最终一致性05:保存并发送事务消息
  • SQL语句大全(详解)
  • 视频营销活动中7个常见的错误
  • MapReduce小试牛刀
  • 2023年全国最新工会考试精选真题及答案7
  • 13-mvc框架原理与实现方式
  • 弹性盒子布局
  • C# Sqlite数据库加密
  • 高压放大器在声波谐振电小天线收发测试系统中的应用
  • 锁相环的组成和原理及应用
  • [C++]string类模拟实现
  • 一个更适合Java初学者的轻量级开发工具:BlueJ
  • 从程序员到项目组长,要经历六重修炼
  • 我的 System Verilog 学习记录(5)
  • 多芯片设计 Designing For Multiple Die
  • 2022年全国职业院校技能大赛(中职组)网络安全竞赛试题A(10)
  • 数据结构-简介
  • python装饰器及其用法
  • Appium自动化测试之启动时跳过初始化设置
  • JavaScript DOM【快速掌握知识点】
  • 不需要高深技术,只需要Python:创建一个可定制的HTTP服务器!