C语言文件的存储和处理实验报告,c语言文件处理实验报告(6页)-原创力文档...

精选文档

PAGE

PAGE 1

文件处理

创建时间:2016-5-27

实验题目

文件处理

实验时间

201

实验地点

DS1408

实验成绩

实验性质

□验证性 □设计性 √综合性

教师评价:

□算法/实验过程正确; □源程序/实验内容提交 □程序结构/实验步骤合理;

□实验结果正确; □语法、语义正确; □报告规范;

其他:

评价教师签名:

一、实验目的

1、掌握字符如何在文件中读取和存储。

2、掌握字符的的简单加密和解密。

3、掌握字符串的复制、查询、比较、连接、长度等基本C语言库函数。

二、实验项目内容(实验题目)

1)如果file1.dat不存在,就建立file1.dat。并在文件file1.dat中存入两个字符串,第1行是帐号,第2行是密码。

2)如果file2.dat不存在,就建立file2.dat。加密规则是将文件file1.dat中的密码的每一字与0x6a异或变成另一个字符送屏幕显示,同时存入文件file2.dat中。

3)如果file2.dat存在,则执行登陆程序,要求输入帐号和密码,并和file2.dat中解密(解密和加密采用同样的算法)得到的帐号和密码进行比较,如果一致则显示登录成功,否则显示登录失败。

加密和解密的方法可以设计得复杂一些。

三、源程序(实验过程或算法)

1、算法如下

一、执行注册程序:以只读方式打开file1.dat,若不成功,则建立file1.dat。分别用字符数组a,b存放注册时录入的账号密码,并fputs入file1.dat.

二、开始加密:以只读方式打开file2.dat,若不成功,则建立file2.dat。将数组b(即密码)每个元素与0x6a异或后送屏幕显示,并fputc入文件file2.dat中。

三、加密后解密:以只读方式打开file2.dat,若成功,则开始解密和登录程序。从file2.dat中读出的加密后的密码并与0x6a再次异或后用数组p存放。

四、执行登录程序:分别用字符数组c,d存放登录时录入的账号密码,并用strcmp函数分别与数组a,p比较,如果一致则显示登录成功,否则显示登录失败。

2、源程序如下

#include

#include

#include

#define N 0x6a

int main()

{

FILE *fp1,*fp2;

fp1=fopen("file1.dat","r");

if(fp1==NULL)

{

fp1=fopen("file1.dat","w+");

printf("开始注册\n");

char a[10],b[10];

printf("请输入账号:\n");

gets(a);

fputs(a,fp1);

fputc('\n',fp1);

printf("请输入密码:\n");

gets(b);

fputs(b,fp1);

fclose(fp1);

}

else

{

char a[10],b[10],ch,x,y,z;

int m=0,n=0;

fseek(fp1,0,SEEK_SET);

while((x=fgetc(fp1))!='\n')

{

a[m]=x;

m++;

}

a[m]='\0';

while((z=fgetc(fp1))!=EOF)

{

b[n]=z;

n++;

}

b[n]='\0';

fclose(fp1);

fp2=fopen("file2.dat","r");

if(fp2==NULL)

{

fp2=fopen("file2.dat","w+");

for(int i=0;i<10;i++)

{

ch=b[i]^N;

putchar(ch);

fputc(ch,fp2);

}

printf("\n");

fclose(fp2);

}

else

{

printf("开始登录\n");

char c[10],d[10],p[10];int j=0;

printf("请输入账号:\n");

gets(c);

printf("请输入密码:\n");

gets(d);

fseek(fp2,0,SEEK_SET);

while((ch=fgetc(fp2))!=EOF)

{

char a=ch^N;

p[j]=a;

j++;

}

p[j]='\0';

if((strcmp(a,c)==0)&&(strcmp(p,d)==0))

printf("登录成功");

else

printf

【实验目的】 1. 通过编写调试存储管理的模拟程序以加深对存储管理方案的理解; 2. 熟悉虚存管理的各种面淘汰算法; 3. 通过编写调试地址转换过程的模拟程序以加强对地址转换过程的了解。 【实验准备】 1.虚拟存储器的管理方式  段式管理  式管理  段式管理 2.面置换算法  先进先出置换算法  最近最久未使用置换算法  Clock置换算法  其他置换算法 【实验内容】 1. 实验题目 设计一个请求存储管理方案。并编写模拟程序实现之。产生一个需要访问的指令地址流。它是一系列需要访问的指令的地址。为不失一般性,你可以适当地(用人工指定地方法或用随机数产生器)生成这个序列,使得 50%的指令是顺序执行的。25%的指令均匀地散布在前地址部分,25%的地址是均匀地散布在后地址部分。为简单起见。面淘汰算法采用 FIFO面淘汰算法,并且在淘汰一时,只将该表中抹去。而不再判断它是否被改写过,也不将它写回到辅存。 2. 具体做法 产生一个需要访问的指令地址流;指令合适的面尺寸(例如以 1K或2K为1);指定内存表的最大长度,并对表进行初始化;每访问一个地址时,首先要计算该地址所在的号,然后查表,判断该是否在主存——如果该已在主存,则打印表情况;如果该不在主存且表未满,则调入一并打印表情况;如果该不足主存且表已满,则按 FIFO面淘汰算法淘汰一后调入所需的,打印表情况;逐个地址访问,直到所有地址访问完毕。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值