操作系统—文件管理,C语言实现(1、编程显示文件自身。 2、编程实现文件加密解密。 3、编程实现文件的合并。)

附上个人文章地址
推荐点此此阅读效果更佳

1.编写C语言代码显示文件本身

在此实验中,先在自己的电脑中建立一个txt文本文件,并输入数据。同时需要知道该文件的保存路径(需要写在代码里)
直接上代码:

#include <stdio.h>
#include <stdlib.h>

void main()
{
FILE *fp;
int a[80];
if((fp=fopen("F:\\file1.txt","r"))==NULL)//查看文件是否存在,文件所在路径需要根据自己电脑的实际位置进行修改!!!
{ 
printf("no found this file\n");
exit(0);//如果不存在就退出
}
for(int i=0;(!feof(fp));i++)//用for循环读取文件中的数据并显示
{ 
fscanf(fp,"%d",&a[i]);//读取数据
printf("%d\n",a[i]);//显示数据
}
fclose(fp);
}

效果图
该文件内容
在这里插入图片描述
运行代码后显示:
在这里插入图片描述

2.编程实现文件加密解密

将文件file1.txt中的每一字符与0x6a异或(异或的运算符号为^)变成另一个字符存入文件temp.txt中。然后打开加密的temp.txt文件,再用同样异或方法解密输出解密内容到file2.txt中。
要求:
⑴测试文本学生自己创建一个文件file1.txt。
⑵用文本读写模式加密解密,比较原件、加密文件和解密件的内容是否一致;
⑶用二进制读写模式加密解密,比较原件、加密文件和解密件的内容是否一致;

代码如下:

#include<stdio.h>
#include<stdlib.h>
int main(void){
 FILE *sou=NULL,*des=NULL;
 int ch,key=0x6a;
 sou=fopen("d:\\file1.txt","r");//查看file1.txt文件是否存在
 des=fopen("d:\\tmp.txt","w");//查看tmp.txt是否存在
 if(NULL==sou||NULL==des)
     exit(0);//不存在则退出
 while(1){
  ch=fgetc(sou);//获取file1.txt内的数据
  if(feof(sou))
      break;//读取结束退出循环
  ch^=key;//文件内容与0x6a进行异或运算
  fputc(ch,des);//将结果保存在tmp.txt中
    }
 fclose(sou);
 fclose(des);
 //以下则是与以上操作相同,将tmp.txt的数据与0x6a进行异或运算,最后结果保存在文件file2.txt中
 sou=fopen("d:\\tmp.txt","r");
 des=fopen("d:\\file2.txt","w");
 if(NULL==sou||NULL==des)
     exit(0);
 while(1){
  ch=fgetc(sou);
  if(feof(sou))
      break;
  ch^=key;
  fputc(ch,des);
 }
 fclose(sou);
 fclose(des);
 return 0;
}

代码运行结果图
file1.txt
在这里插入图片描述

file2.txt
在这里插入图片描述

tmp.txt
在这里插入图片描述

3.编程实现文件的合并

该程序是将两个已存在的文件内容进行合并,需要输入两个文件的地址,代码如下:

#include<stdio.h>
int main()
{
int len=0;
int len2=0;
FILE* stream;
FILE* stream1;
char buf[50];
char buf1[50];
char text[1024];
printf("input anfile path to open:");//输入一个文件的地址
scanf("%s",buf);
stream=fopen(buf,"r+");
fseek(stream,0,SEEK_END);//检索
printf("intput another file name: \n");//输入另一个文件的地址
scanf("%s",buf1);
stream1=fopen(buf1,"r+");
fseek(stream1,0,SEEK_END);//检索
len=ftell(stream1);//获取第二个文件数据内容长度
fseek(stream1,0,SEEK_SET);//使指针处于第二个文件内容的开头
fread(text,len,1,stream1);//获取第二个文件内容
fwrite(text,len,1,stream);//写入到第一个文件中
fclose(stream);
fclose(stream1);
remove(buf1);       //移除第二个文件
return 0;
}

运行效果图
file1.txt
在这里插入图片描述

file2.txt

在这里插入图片描述

运行时:
在这里插入图片描述

结果:
在这里插入图片描述

  • 4
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值