字符串存取在文件中的有关问题

求助字符串存取在文件中的问题
各位大侠,小弟近日在做DES加密解密,现有一个DES代码,加密程序加密后将密文存放在文件中,然后解密程序通过读取文件获得密文进行解密。
DES加密后的密文为乱码,形如: "?(O?|N镮[戴-??鞅V "
现在程序出现问题,如果不将密文存在文件中,直接用密文字符串进行解密,能正确解出所有明文。
但是如果保存在文件中,再读出的话可能就会解密失败
请问是文件的存储问题吗,如果是,这样的乱码该怎么保存?
文件的读取操作用的是:
        FILE   *fp;
        fp   =   fopen( "mcode ",   "r+ ");
        if(fp   ==   NULL){puts( "file   open   error! ");return;}
        while(!feof(fp))
                mcode[a++]   =   fgetc(fp);
                    fclose(fp);
请各位帮忙了,谢谢了。


------解决方案--------------------
fp = fopen( "mcode ", "rb+ ");
写文件时也要用wb
------解决方案--------------------
密文为二进制文件
要用rb