提问
数据结构要实习,有一条要求如下:
测试数据:要求使用全部合法数据、整体非法数据、局部非法数据对程序进行测试,以保证程序的稳定。测试数据及测试结果请在上交的资料中写明。
什么是“测试数据”啊?有没有哪位朋友可以看看解个惑(抱拳)
比如说你写了一个程序,从键盘上读取一个10个数字,输出它的阶乘
那么你输入的数字就是测试数据
如果输入的是都是字母,就是非法数据
如果输入的数据中有的是字母,那么就是部分非法数据
如果输入的是负数,那么也是非法数据(因为负数阶乘没意义)
如果输入了一个非常大的数,尽管在数学上合理,但是超过了程序处理的范围,也是非法数据
将文件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
你这个测试数据相当于真实数据了,因为你要有测试数据及测试结果