北京苏梅岛直飞:有关 文件加密程序 的调试及运行问题 请大侠帮忙 不尽感恩

来源:百度文库 编辑:杭州交通信息网 时间:2024/05/05 21:51:06
/* Turbo 2.0 pass. give file a password! */

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

void dofile(char *in_fname,char *pwd,char *out_fname);/*对文件进行加密的具体函数*/

void main(int argc,char *argv[])/*定义main()函数的命令行参数*/
{
char in_fname[30];/*用户输入的要加密的文件名*/
char out_fname[30];
char pwd[8];/*用来保存密码*/

if(argc!=4){/*容错处理*/
printf("\nIn-fname:\n");
gets(in_fname);/*得到要加密的文件名*/

printf("Password:\n");
gets(pwd);/*得到密码*/

printf("Out-file:\n");
gets(out_fname);/*得到加密后你要的文件名*/

dofile(in_fname,pwd,out_fname);
}
else{/*如果命令行参数正确,便直接运行程序*/
strcpy(in_fname,argv[1]);
strcpy(pwd,argv[2]);
strcpy(out_fname,argv[3]);
dofile(in_fname,pwd,out_fname);
}

}

/*加密子函数开始*/
void dofile(char *in_fname,char *pwd,char *out_file)
{
FILE *fp1,*fp2;
register char ch;
int j=0;
int j0=0;

fp1=fopen(in_fname,"rb");
if(fp1==NULL){
printf("cannot open in-file.\n");
exit(1);/*如果不能打开要加密的文件,便退出程序*/
}
fp2=fopen(out_file,"wb");
if(fp2==NULL){
printf("cannot open or create out-file.\n");
exit(1);/*如果不能建立加密后的文件,便退出*/
}
while(pwd[++j0]);
ch=fgetc(fp1);

/*加密算法开始*/
while(!feof(fp1)){
fputc(ch^pwd[j>=j0?j=0:j++],fp2);/*异或后写入fp2文件*/
ch=fgetc(fp1);
}
fclose(fp1);/*关闭源文件*/
fclose(fp2);/*关闭目标文件*/
}
请问这个程序是不是只能在Turbo 2.0下运行呢? 还有怎么好像我在vc++上运行不了, 不知是不是我输入错了, 请看看吧
运行后 我是这样输入的:
In-fname;
模版 (我桌面上的一个文件夹)
password:
12345678 (我输入的密码)
Out-file:
123 (我想加密后的文件名)但是好像不能执行 是不是我理解错了 还是怎样

cannot open in-file。
press any key to continue

我不知道是怎么回事 ?请多多指教 我是刚学的 谢谢啦

fp1=fopen(in_fname,"rb");
if(fp1==NULL){
printf("cannot open in-file.\n");
exit(1);/*如果不能打开要加密的文件,便退出程序*/

这里要求in_fname中的路径必须正确!

in_fname要么是当前路径!要么是完整路径!
你输入错误!找不到当然显示cannot open in-file

程序vc下可以!我试过了!