不明白C和C++在这里的区别
有一段代码。保存为“*.c”时候编译、运行没问题,但是保存为“*.cpp”时候就编译错误了。如果一定要保存为“*.cpp”,代码应该做怎样的修改呢?
为什么会出现这样的问题呢?
/*代码的功能是“将指定的文件二进制代码与给定的数据进行异或,从而达到简单的加密功能”
程序代码:
#include<stdio.h> #include<stdlib.h> #include<string.h> void Encryption(char *in_fname,char *pwd,char *out_fname);//对文件进行加密的具体函数 void main() { FILE *fp; char in_fname[30];//用户输入的要加密的文件名 char out_fname[30]; char pwd[20]; //用来保存密码 printf("\n输入需要加密的文件名称:\n"); gets(in_fname);//得到要加密的文件名 fp=fopen(in_fname,"rb"); if(fp==NULL) { printf("无法打开文件“%s”\n", in_fname); return; } fclose(in_fname); printf("输入密码:\n"); gets(pwd);//得到密码 printf("输入加密后文件的名称:\n"); gets(out_fname);//得到加密后你要的文件名 Encryption(in_fname,pwd,out_fname); } //加密子函数开始 void Encryption(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("无法打开%s\n", in_fname); return; } fp2=fopen(out_file,"wb"); if(fp2==NULL) { printf("无法创建%s\n",out_file); system("pause"); return; } 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); }
[ 本帖最后由 弗朗先生 于 2011-12-23 22:47 编辑 ]