void encode2() /*加密文件*/
{
int m,n=strlen(password.ps),d;
int i,flag = 1; //m存储加密字符长度 ,n存储加密字符串长度 ,i 为临时变量
char N,w;
char c,C;//临时字符存储变量
char ch='a';
FILE *result = fopen("result.txt","wt");
if(result == NULL )
{
printf("无法打开 result.txt \n");
exit(0);
}
FILE *source = fopen("source.txt","wt");
if(source == NULL )
{
printf("无法打开 source.txt \n");
flag = 0;
}
char filename[100]; //文件名
printf("请输入要加密的文件名及地址:\n");
getchar();
gets(filename); //这句要用户输入文件名
FILE *fp=fopen(filename,"r");
if (fp==NULL) //打开文件,并判断是否有打开错误
{
printf("无法打开文件\n");
system("pause");
exit(0);
}
while((ch=fgetc(fp))!=EOF)
{
fputc(ch,source);
}
if (flag = 1) C = fgetc(source);
for( i=0;(c=fgetc(source)) != EOF;i++)
{
static int a=1;
if((a<password.wd)&&(i%(password.l+1)==0))
{
N=c+password.ps[a%n]-48;
if(N>122)
{
N=N%122; /*模运算*/
}
fputc(N,result);
a++;
}
else fputc(N,result);
}
printf("\n加密成功!\n");
fclose(result);
fclose(source);
fclose(fp);
system("pause");
}
if (flag = 1) C = fgetc(source);
改为if (flag == 1) C = fgetc(source);
1. char filename[100] = {0}; 要记得初始化一下,这是个好习惯
2. if(flag = 1)这里少了个等号,建议这样写 if(1 == flag),好处是即使少了等号,编译器会产生错误信号,这也是个好习惯。
您好,我是有问必答小助手,您的问题已经有小伙伴解答了,您看下是否解决,可以追评进行沟通哦~
如果有您比较满意的答案 / 帮您提供解决思路的答案,可以点击【采纳】按钮,给回答的小伙伴一些鼓励哦~~
ps:问答VIP仅需29元,即可享受5次/月 有问必答服务,了解详情>>>https://vip.csdn.net/askvip?utm_source=1146287632