#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#define OFN "原文件.txt"
#define EFN "加密文件.txt"
#define DFN "解密文件.txt"
void encrypto(char str1[],char str2[])
{ FILE* fp1;
FILE* fp2;
if((fp1=fopen(str1,"rb"))==NULL)
{
printf("%s 文件打开失败!\n",str1);
return;
}
if((fp2=fopen(str2,"wb"))==NULL)
{
printf("%s 文件打开失败!\n",str2);
return;
}
char t[250][250];
int j,h,n;
printf("输入行数:");
scanf("%d",&n);
getchar();
for(j=0;j<n;j++)
{
gets(t[j]);
t[j][strlen(t[j])+1]='\0';
}
//puts(t[0]);
for(j=0;j<n;j++)
{
for(h=0;t[j][h]!='\n'&&t[j][h]!='\0';h++)
{
t[j][h]+=h+1;
}
}
printf("加密后:\n");
fclose(fp1);
fclose(fp2);
}
void decrypto(char str1[],char str2[])
{ FILE* fp1;
FILE* fp2;
if((fp1=fopen(str1,"rb"))==NULL)
{
printf("%s 文件打开失败!\n",str1);
return;
}
if((fp2=fopen(str2,"wb"))==NULL)
{
printf("%s 文件打开失败!\n",str2);
return;
}
char t[250][250];
int j,h,n;
for(j=0;j<n;j++)
{
for(h=0;t[j][h]!='\n'&&t[j][h]!='\0';h++)
{
printf("%c",t[j][h]);
}
printf("\n");
}
printf("解密后:\n");
for(j=0;j<n;j++)
{
for(h=0;t[j][h]!='\n'&&t[j][h]!='\0';h++)
{
printf("%c",t[j][h]-1-h);
}
printf("\n");
}
}
int main()
{
int choice;
while(1){
system("cls");
printf("欢迎使用文件加密系统!\n");
printf("请输入您的选择\n");
printf("1.加密文件 2.解密文件 3.退出系统\n");
scanf("%d",&choice);
while(choice != 1 && choice != 2 && choice !=3)
{
printf("输入选择有误!请重新输入:");
scanf("%d",&choice);
}
switch (choice)
{
case 1: encrypto(OFN,EFN);
break;
case 2: decrypto(EFN,DFN);
break;
case 3: printf("非常感谢您的使用!期待与您下次相见\n");
break;
}
}system("pause");
return 0;
}
这个代码哪里错了啊?