注册 登录
编程论坛 C++教室

不明白C和C++在这里的区别

弗朗先生 发布于 2011-12-23 22:45, 831 次点击
有一段代码。保存为“*.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 编辑 ]
4 回复
#2
rjsp2011-12-24 08:21
char in_fname[30];
…………
fclose(in_fname); // 应该改为 fclose(fp);
#3
waterstar2011-12-24 10:53
c++在语法上比c更加严格,虽然有些c代码在c++中能编译通过,但由于其强类型的检测,有些还是会出现错误的。
#4
弗朗先生2011-12-24 11:43
回复 2楼 rjsp
原来如此。
谢谢了。
#5
弗朗先生2011-12-24 11:43
回复 3楼 waterstar
谢谢嘞!
1